アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
javascript初心者のため、的外れな質問をしていましたらすみません。

HTMLサイトのフォーカスを、TabキーまたはShift+Tab押下で特定の範囲内で循環させたいと考えております。
イメージ的には、サイトのメニューにあたる部分(リンク)をぐるぐるループしてくれれば・・・と思うのですが。

Tabindex指定ですと、意図した順番には移動してくれますが、最後のTabが押されても最初に戻ることはできませんし・・・
そう思ってonkeydownで制御しようと思ったのですが、Shift+Tabの動作をどう実現していいのか分かりませんでした。

言葉足らずで申し訳ありませんが、ご回答宜しくお願い致します。

A 回答 (1件)

れすがつかないね~。


これでよいのかまったくわかりません。
(めもりーりーくとか、そのたもろもろ・・・)
できるなら、たのひとのあどばいすがほしいです。
ぜんかくくうはくは、はんかくにしてね

2だんめのあんかーにふぉーかすをあてるには、
まうすでどらっぐしてほかのばしょではなす?。
はんたいまわりは、てぬきしました。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>test</title>
<form action="#">
<p id="pp">
<a href="#">abc</a>
<a href="#">abc</a>
<a href="#">abc</a>
</p>
<p id="qq">
<a href="#">abc</a>
<a href="#">abc</a>
<a href="#">abc</a>
</p>
<p id="rr">
<a href="#">abc</a>
<a href="#">abc</a>
<a href="#">abc</a>
</p>
<p>a</p>
</form>
<script type="text/javascript">
//@cc_on

var Kurukuru = (function ( createListener, get, next ) {
 return function ( id ) {
  var listener = createListener( id, get, next );
 
  document.getElementById( id )./*@if( @_jscript ) attachEvent('on' + @else@*/ addEventListener(/*@end@*/
   'keydown', listener, true);
 };
})(
 function ( tid, get, next ) {
  return function (evt) {
   var e = evt./*@if( @_jscript ) srcElement @else@*/ target /*@end@*/;
   var keyCode = evt./*@if( @_jscript ) keyCode @else@*/ which /*@end@*/;
   var shift  = evt.shiftKey;
   var p, c;
   
   if( 'A' !== e.nodeName ) return;
   
   if( !shift && keyCode == 9 ) {
    if( p = get( next( e ), 'id', tid ) ) return;
    evt./*@if( @_jscript ) returnValue = false @else@*/ preventDefault() /*@end@*/;
    (p = next( e.parentNode )) && p.focus();
   }
  };
 },

 function (node, type, val) {
  return node ? (val == node[type]) ? node: arguments.callee(node.parentNode, type, val): null;
 },
 
 function ( n ) {
  var e;

  while (n) {
   e = n.firstChild || n.nextSibling
   if (! e) {
    do {
     if ((n = n.parentNode) && n.nodeName == 'BODY') return null;
    } while (! (e = n.nextSibling))
   }
   n = e;
   if( 1 === n.nodeType && 'A' == n.nodeName ) return n;
  }
  return null;
 }

);


Kurukuru('pp');
Kurukuru('qq');
Kurukuru('rr');


</script>
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありませんでした。

投げっぱなしの質問だったにも関わらず、丁寧なご回答をどうも有難う御座いました。
自分の勉強不足を反省し、こちらのソースを参考に作成させて頂きたいと思います。

本当に有難う御座いました。

お礼日時:2009/10/19 14:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!