CSSだけで作るドロップダウンメニューのHTMLの構造って↓みたいな感じらしいんですが、
<ul id="dropmenu">
<li><a href="#">メニュー</a>
<ul id="submenu">
<li><a href="#">サブメニュー</a></li>
<li><a href="#">サブメニュー</a></li>
<li><a href="#">サブメニュー</a></li>
<li><a href="#">サブメニュー</a></li>
</ul>
</li>
</ul>
これのサブメニューを配列からinnerHTMLで生成するときに、
var links="";
site[0]={link:'http;www',title:'アマゾン'};
site[1]={link:'http;www',title:'紀伊国屋'};
site[2]={link:'http;www',title:'ヤフーオークション'};
for(var m = 0; m < site.length; m++){
links += '<li><a href=" '+site[m]['link']+' ">'+site[m]['title']+'</a></li>';
}
document.getElementById("submenu").innerHTML=links;
<html>
<body>
<ul id="dropmenu">
<li><a href="#">メニュー</a>
<ul id="submenu">
</ul>
</li>
</ul>
</body>
</html>
で、全く動きません。勉強中の自分には何処がオカシイのかすら分かりません。
何処がオカシイか指摘してください。または、もっとスマートに出来る方法がありましたら、ヒントだけでもご提示いただけたら幸いです。
よろしくお願いいたします。
No.1
- 回答日時:
2箇所ほど修正してみてください。
1)siteが配列として定義されていないので、先に
var site = []; などで、定義しておく
2)<ul id="submenu">のul◇idの◇部分を半角スペースに
それで、DOM ready後にスクリプトが実行されていれば、HTMLに追記されると思います。
追記できても動作しない場合は、CSSが正しく設定されているかどうかも確認をしてみてください。
回答ありがとうございます。
指摘いただいた記法ミスは、ここに手打ちでコピペしたときにミスったもので、本プログラムでは間違っていませんでした。
あと、DOMreadyの意味が調べてもちょっと難解だったので分からないのですが、挿入場所が間違っているのでしょうか?自分は、GoogleAjaxFeedAPIでRSSを表示するときに、google.load("feeds", "1");の前にこのプログラムを足しました。この位置が悪いのでしょうか?(位置は何箇所か変えてやりましたが、結果はどこも同じ)
また、このプログラムを挿入すると本来動いたはずのGoogleAjaxFeedAPIのフィード読み取りプログラムが停止したので、CSSのミスではなくプログラミングが致命的にミスってると思われます。更に、document.getElementById("submenu").innerHTML=links;を消した時に、一応フィード読み取りプログラムが動作したので、この一文がミスってる可能性が高いです。
2日ぐらい、この一文について考えているのですが、どうにもわかりません。jqueryのappendを使ったり試行錯誤はしましたが、動作はすれど結果には反映されずという感じでした。
No.2ベストアンサー
- 回答日時:
A No1です。
>~を消した時に、一応フィード読み取りプログラムが動作したので、この一文がミスってる可能性が高いです。
文法上はおかしくないと思います。
スクリプトの一部のみをご提示のようですが、不具合を再現できるミニマムなセットを提示いただければもう少しわかるかもしれません。
単純に、他のスクリプト等をなくした状態でも、ご提示のコードは動作しますか?
根拠のない推測ですが、A No1にも書きましたように、DOM構築前にスクリプトが実行されていてエラーになっているということはないのでしょうか。
window.onloadの関数として実行するなどで、試してみてみてください。
ありがとうございます!!
window.onload = function(){}
でスクリプトを囲った所、無事動作致しました。こんなんで4日も悩むなんてアホみたいですね・・・
でも、おかげでイベントハンドラの意味がようやく分かった気がします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS htmltとcssの連携をして画像縮小について 1 2022/11/15 20:32
- HTML・CSS htmlについて質問です! 写真のように写真の部分が?になってしまいます。 ファイルもしっかり選べて 1 2023/07/09 21:17
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
関連するカテゴリから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を使ってドロッ...
-
複数の画像をランダム(シャッ...
おすすめ情報