私は最近javascriptの勉強を始めたプログラム初心者です。
下記のjavascriptについてお聞きしたいです。
css
*{
line-height: 1.5em;
}
#wrapper{
width: 380px;
margin: 16px;
}
h1{
font-size: 20px;
border: solid 2px orange;
padding: 2px 4px;
margin: 1em 0 0.5em 0;
}
h2{
background: lightblue;
padding: 2px 4px;
font-size: 12px;
margin: 1em 0 0.5em 0;
}
p{
font-size: 12px;
}
.close{
display: none;
}
.open{};
<script type="text/javascript">
window.addEventListener( 'load',
function(event){
var elem = document.getElementById('lnk_closeAll');
elem.addEventListener('click', closeAll, false);
var elem = document.getElementById('lnk_openAll');
elem.addEventListener('click', openAll , false);
//全見出しに設定
setEventToTitles();
}
, false);
//開閉関数
function openAll(event){
event.preventDefault();
changeAll(false);
}
function closeAll(event){
event.preventDefault();
changeAll(true);
}
//trueならすべて閉じる、falseならすべて展開
function changeAll(close){
var titles = document.getElementsByTagName('h2');
for(var i=0; i<titles.length; i++){
var parent = titles[i].parentNode;
var topics = parent.getElementsByTagName('div');
for(var j=0; j<topics.length; j++){
if(close){
topics[0].className = 'close';
} else {
topics[0].className = 'open';
}
}
}
}
//状態を反転する
function setEventToTitles(){
var titles = document.getElementsByTagName('h2');
for(var i=0; i<titles.length; i++){
titles[i].addEventListener('click', toggleTopic, false);
}
}
function toggleTopic(event){
var title = event.currentTarget;
var parent = title.parentNode;
var topics = parent.getElementsByTagName('div');
if(topics[0].className == 'close'){
topics[0].className = 'open';
} else {
topics[0].className = 'close';
}
}
</script>
</head>
<body>
<div id="wrapper">
<h1>よくある質問と回答</h1>
<p>
<a id="lnk_closeAll" href="#">すべて閉じる</a>
<a id="lnk_openAll" href="#">すべて展開</a>
</p>
<div id="topic1">
<h2>電源ランプが赤く光り、しばらくすると製品が動かなくなります</h2>
<div class="close">
<p>電源ランプが赤く光るのは内蔵バッテリーが消耗していることを示しています。
コンセントを接続して充電してください。</p>
</div>
</div>
<div id="topic2">
<h2>ときどきブザーが鳴りますが、問題ないでしょうか?</h2>
<div class="open">
<p>本製品の長時間利用により低温やけどを負うことがあります。
長時間使い続けていることをユーザーに伝えるため、
4時間15分32秒ごとにピッピッという警告音を鳴らすようにしております。</p>
</div>
</div>
<div id="topic3">
<h2>製品を床に落としてしまいました。問題ないでしょうか?</h2>
<div class="open">
<p>本製品は高さ1メートルからの落下テスト10万回をパスしております。
ただし、1メートル以上の高さから落下した場合は、
故障する可能性がありますので、お近くのサービスセンターにご相談ください。</p>
</div>
</div>
</div>
このプログラムは画像のようにすべて閉じるを押すと説明文が閉じ、
すべて開くを押すと説明文がすべて開きます。
わからない箇所は、
if(topics[0].className == 'close'){
topics[0].className = 'open';
} else {
topics[0].className = 'close';
箇所でどうしてtopics[i]ではなくtopics[0]なのでしょうか。
参考書には「NodeListオブジェクトとして返されますが、必要なのは最初の1つだけなので[0]で先頭要素にアクセスし
classNameプロパティに[close]か[open]を設定する」と記載されています。
ですが、なぜ必要なのは最初の1つだけなのでしょうか?
カウンタiを一つづつふやし、一つ筒divに[close]か[open]を設定しないのでしょうか。
試しにtopics[i]にすると動きません。。。
topics[0]だと動くのに。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
javascriptで自動計算フォーム...
-
HTML:Tableタグに対し、JavaScr...
-
onchangeイベントを使ってspan...
-
日本語入力の禁止
-
【Tabキー】特定の範囲内だけで...
-
配列の大括弧と丸括弧はどう違う?
-
div要素内の全input要素をdisable
-
同じIDで定義した要素の配列を...
-
functionから別のfunctionを実...
-
javascriptとphpの連携で疑問
-
Javascriptグローバル変数の値...
-
関数でy=g(x)のgとは何の略です...
-
JavaScriptでの動的な多次元配...
-
C#テキストボックスの文字を配...
-
javascriptで文字挿入でtoggle...
-
GASでGoogleフォームの自動返信...
-
window.openでタイトル名の指定
-
第3日曜日のみの日付を取得、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
onchangeイベントを使ってspan...
-
HTML:Tableタグに対し、JavaScr...
-
任意の座標をクリックさせるには
-
モーダルダイアログウィンドウ...
-
innerHTML実行後のイベント
-
Click回数を数え、規定された回...
-
javascript 特定のタグのidの存...
-
[初心者]javascriptのfor文でな...
-
【Tabキー】特定の範囲内だけで...
-
javascriptでスロットゲームを...
-
JavaScriptとcookieを利用して...
-
日本語入力の禁止
-
javascriptで、表示されている...
-
javascriptで編集可能不可能の...
-
画像の一部を表示
-
DIV内のDIV要素を移動する。
-
javascript の 命令文の記述で...
-
重複しないくじの作り方がわか...
おすすめ情報