- ベストアンサー
セレクトメニューで最初から読み込ませておくには?
下記のサイトにあるサンプルを参考に活用しようかと思っています。 しかし、最初は選択されておらず、選択して初めて表示されますが、これを1つ目はページ読み込み時に最初から表示させておいて、更に選択変更されたら表示変更するようにしたいのですが、 onloadでいけるかと思いきや、上手くいきません。 なんとなく何をしなければいけないのか分からなくもないのてすが、どう書けばいいのかが わかりません。 ご教授頂けるようお願いします。 http://www.h-fj.com/ascii/google_ajax_feed/sample2.html
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
生のjsは苦手ですが、bodyのonLoadにinit()を指定。 <body onLoad="init()"> init()は下記のようにすると良いでしょう。 function init(){ var sel = document.getElementsByName('url'); sel[0].getElementsByTagName('option')[1].selected = 'selected' loadFeed(sel[0]); }
その他の回答 (3)
- Ogre7077
- ベストアンサー率65% (170/258)
初期表示させたい選択肢のみを、選択状態にする 例) 変更前: <option value="http://ascii.jp/biz/rss.xml">ビジネス</option> 変更後: <option value="http://ascii.jp/biz/rss.xml" selected>ビジネス</option> 画面読み込み時に、現在の選択肢でフィードを読み取る処理を追加 <script> function initialize() { var sel = document.querySelector('select[name="url"]'); // var sel = document.getElementsByName('url')[0]; // 古い環境の場合 if (sel) loadFeed(sel); } google.setOnLoadCallback(initialize); </script>
お礼
ありがとうございます。 querySelectorは見覚えあっても、あまり知りませんでした。 html5やcss3へ移行しようと覚えてるので勉強になりました。
- ONEONE
- ベストアンサー率48% (279/575)
いえ、読み込んだ時に、プログラム的に選択してやれば、擬似的に初期表示できます、という回答です。 onLoadで行けると思いますけど、どう行けないんでしょうか?
補足
再度の回答ありがとうございます。 onloadの場合、読み込み中です。が表示されて止まってしまうようです。 初心者なので解釈間違えてるかもしれませんが、 container.innerHTML = '<p>読み込み中です。</p>'; で止まるようなので、次の段階でフィードのアドレスを得る際に onchange設定されてるのにonchangeされずにいるから、onloadではダメなのかと思っています。 どうなんでしょう?? #1のは、for 以下のを使い分岐させるって事でしょうか??
- ONEONE
- ベストアンサー率48% (279/575)
http://www.pori2.net/js/form/5.html こんな感じでセレクトを選んであげればいいのでは?
補足
セレクト項目の表示変更ではなく、選択せずとも読み込み時にはselectedで指定された項目を<div id="feed">に表示させておきたいのです。 もちろんセレクトメニュー選択すれば切り替わります。 セレクトを最初からアクティブにしてやる方法が分からなくて悩んでいます。
お礼
出来ました。 元のfunctionをどう変更したらいいかと悩んでいましたが、 変に弄るよりは新たに作っても良かったんですね。 ありがとうございました。