下記の構成と成っている。
main.html
menu.html
contents.html
1509-1504.html
150908-1515.html
150909-1518.html
main.htmlの内容
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=shift_jis">
<title>メニュー</title>
<body>
<iframe src="menu.html" name="menu" width="12%" height="100%"align="left" style="margin-left:50px;"></iframe>
<iframe src="contents.html" name="contents" width="80%" height="100%"align="left"></iframe>
</body>
</html>
menu.htmlの内容
<html>
<head>
<title>メニュー</title>
</head>
<body>
<style>
li.hide{display:none;}
</style>
<input type="text" name="keyword" id="keyword" tabindex=1>
<input type="button" value="choice" onclick="choice()" tabindex=2>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12 …
<script>
$(function(){
$("#target li:last-child a")[0].focus();
$("#target li:last-child a")[0].click();
$("#keyword").keypress(function(e) {
var c = e.which ? e.which : e.keyCode;
if (c == 13) {
$("#choice").focus();
choice.call();
e.preventDefault();
}
});
$("#target a").on('keydown',function(e){
var target_a=$(this);
if(e.keyCode==74){
var target_li=$(this).closest('li').prev('li');
target_a=target_li.length==0?$(this).closest('ol').find('a:eq(-1)'):target_a=target_li.find('a');
}else if(e.keyCode==76){
var target_li=$(this).closest('li').next('li');
target_a=target_li.length==0?$(this).closest('ol').find('a:eq(0)'):target_a=target_li.find('a');
}else if(e.keyCode==75){
$("#keyword").focus();
e.preventDefault();
rerurn ;
}
var aa=target_a.text();
var bb="#"+aa;
$(bb).focus();
$(bb)[0].click();
});
});
function choice(){
var reg=new RegExp(document.getElementById("keyword").value);
var obj=document.getElementById("target").getElementsByTagName("li");
for(var i=0;i<obj.length;i++){
obj[i].className=(obj[i].textContent.match(reg))?"":"hide";
}
$("#target a").focus();
}
</script>
<ol id="target">
<li><a href="./150908-1504.html" target="contents" id="150908-1504">150908-1504</a></li>
<li><a href="./150908-1515.html" target="contents" id="150908-1515">150908-1515</a></li>
<li><a href="./150909-1518.html" target="contents" id="150909-1518">150909-1518</a></li>
</ol>
</BODY>
</HTML>
contents.htmlの内容
<HTML>
<HEAD>
<TITLE>contents</TITLE>
</HEAD>
<BODY>
<P>
最初はここに表示する
</P>
</BODY>
</HTML>
150908-1504.htmlの内容
<HTML>
<HEAD>
<TITLE>contents</TITLE>
</HEAD>
<BODY>
<P>
150908-1504
</P>
</BODY>
</HTML>
150908-1515.htmlの内容
<HTML>
<HEAD>
<TITLE>contents</TITLE>
</HEAD>
<BODY>
<P>
150908-1515
</P>
</BODY>
</HTML>
150909-1518.htmlの内容
<HTML>
<HEAD>
<TITLE>contents</TITLE>
</HEAD>
<BODY>
<P>
150909-1518
</P>
</BODY>
</HTML>
ここで、kを打鍵してから検索するワードを入力
すると、結果を表示して結果の欄にカーソルは行
くが、その時の内容は表示されないで、前の内容
を表示している。
次に、カーソルを前後に移動すると、その時は内容
を表示する。常に、最初の行にカーソルが飛んだ時
は内容を表示しないで、前の内容を表示する。
これは、choice関数の中で、やっているが。この関数
の何処がおかしいのだろうか。
済みません。指摘をお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
回答が無いみたいなので・・・>結果を表示して結果の欄にカーソルは行くが、
>その時の内容は表示されない
「表示されない」というのはiframe内にそのリンクのurlが表示されないという意味でしょうか?
スクリプトからiframeに内容を表示するには、大きく2種類の方法が考えられます。
1)iframeのsrc属性に、指定するurlを設定する
2)iframeをtargetとした、リンク要素をクリックする
どちらでも可能ですが、ご提示のスクリプトでは2)の方法を用いているようですね。
>カーソルは行くが~~~表示されない
カーソルの移動はfocus()で行っているようです。表示するには、上記のクリックかsrc属性の設定を行う必要があります。
ご提示のスクリプトを見てみると、移動(j,lの押下げ)の際には表示処理を併せて行っていますが、他では行っていないので、結果としてご質問のようになっているだけと思われます。
余談ですが・・・
同じような処理内容を場所によって異なる記述方法で記していたり、だいぶまわりくどい記述をしていたりするように見受けられます。(何か意図があるのかもしれませんが・・・)
意図的ではない場合は、一度、見直して整理なさった方が宜しいかと。
例えば、
> var aa=target_a.text();
> var bb="#"+aa;
> $(bb).focus();
> $(bb)[0].click();
は、HTMLにタイプミスがあると結果的に何の処理もされませんが、自分自身を取得し直しているだけなので、
target_a.focus().click();
ですんでしまいそうに思えます。
(idがこのためにあるのなら、タグ側のidも無くてもよそうな気がしますが…)
有難う御座います。
実は、最初はこの回答に有る様に、
target_a.focus().click();
と書いていましたが、このメソッドチェーンは出来ません。
その時のコードを下記に示します。
target_a.focus().click();
/*
//target_a=target_li.find('a');
var aa=target_a.text();
var bb="#"+aa;
$(bb).focus();
$(bb)[0].click();
*/
コメントを外して、下記の様にすると動きます。
//target_a=target_li.find('a');
var aa=target_a.text();
var bb="#"+aa;
$(bb).focus();
$(bb)[0].click();
メソッドチェーンが出来れば楽と思い、かなり
挑戦しましたが出来ませんでしたので。苦肉の策
としてコードを書きました。
そこは動いていますので、良しとして。私が出した問題の
趣旨は、choice()の関数の所で、回答者が示した様に
focus()で止まっています。
実はここの所で、click()させる方法が分かりません。と言うのが
質問の趣旨です。
そこの所だけが、今は解決をしていません。
済みません。そこの所だけの回答を宜しくお願いします。
また、この前に書いた所のメソッドチェーンが出来ない
理由も教えて貰えれば幸いです。
宜しくお願いします。
No.2
- 回答日時:
#1です。
>実はここの所で、click()させる方法が分かりません
スクリプトで行っていることの意味をきちんと理解なさった方がよろしいかと。
なお、回答もちゃんと読んだ方が良いと思いますよ。
面倒なら、別途で、
$(function(){ $("#target a").on("focus", function(){ $(this).click();} );});
とでもしておけば良いのでは?
有難う御座います。
私の理解が悪くて済みません。
回答通りに記述して動かない物に付いては、
私にはどうしてそれが動かないのかは分かり
ません。
最初の回答は、target_a.focus().click();
として、動くと言われましたが、これは
動きません。
また、今回の
$(function(){ $("#target a").on("focus", function(){ $(this).click();} );});
も、この通りにしても動かないのですが。
何が悪いのでしょうか。
menu.htmlの<script>から、</script>の所は下記
の様に成っています。
<script type="text/javascript">
<!--
$(function(){
...上記に下記を追加しました。
$("#target a").on("focus", function(){
$(this).click();
});
これは、動きません。何が悪いのでしょうか。
私の理解が足りなくて済みませんが。
出来れば、全体のスクリプトを提示願えないでしょうか。
宜しく回答願います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォントサイズの変更
-
戻ってきた時ツリーメニューが...
-
多階層ドロップダウンのスマホ...
-
pythonのDjangoでHTML内で変数...
-
jqueryのsortableで一部ソート...
-
文字と数字が混在する要素のsor...
-
jqueryアコーディオンのマウス...
-
jQueryセレクタ/複数要素の指...
-
プルダウンメニュー連動後の処...
-
ツリーメニューについて
-
jqueryプルダウンメニュー個別着色
-
javascript テキストエリアを1...
-
MAX関数を使ってからLEFT JOIN...
-
c++std::string型をTCHARに変換...
-
htmlの記述で link rel=styles...
-
JQueryで画像の上で文字を動かす
-
ロールオーバー効果にならない。
-
jspでcssが読み込めない
-
スライダーを実装した場合、ペ...
-
離れた場所にマウスオーバーで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
javascriptでEnterキーをtabキ...
-
クリックした<a>タグのみにClas...
-
チェックボックスに入っている...
-
【javascript で動的に a タグ...
-
jquery ドロップダウンメニュー...
-
「jQuery」アコーディオンメニ...
-
jQueryで、リンクURLの一致を確...
-
jQueryのeqで最後からn番目以降...
-
ネストされたチェックボックス...
-
javascriptで、クリックしたら...
-
onmouseoverの表示切り替えが上...
-
文字と数字が混在する要素のsor...
-
jQueryでネスト構造の<li>がク...
-
タブメニューを上下に設置
-
<li></li>の数を制限
-
jQuery多層式アコーディオンメ...
-
どの<li><a> が押されたか判別...
-
CSSとJavaScriptを使ってドロッ...
-
複数の画像をランダム(シャッ...
おすすめ情報