• 締切済み

JavaScriptの条件文の記述方法

以下のJavaScriptの条件式で「if(elements && elements.length){」がありますが、この条件式の意味を教えていただけないでしょうか? 始めは間違いかと思いましたが、正常に動作しています。 (HTML中にtestのインプット項目があるため分岐1を通ることになりますが、その理由がわかりません。) -source-------------------------- JavaScript(抜粋) --- function getElements() { var elements = document.getElementsByName("test") if(elements && elements.length){ alert("分岐1"); }else{ alert("分岐2"); } } --- HTML(抜粋) --- <input type="hidden" name="test"> <button onclick="getElements()">getElementsByName('test')</button> ---

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

var elements = document.getElementsByName("test") って、testというnameのタグがなくてもnullにはならないみたいですね。 なのでif(elements)は意味がないかもしれません。 if(document.getElementsByName)とかでチェックするなら別ですが・・・ elements.lengthはヒットしたタグの数ですから、 存在すると1以上の数値が変えるため、ifで拾うことができます

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

>if(elements && elements.length) 冗長に書くと、 if(elements!=null && elements.length!=0) ということです。 document.getElementsByNmaeとの組み合わせで言うと、name属性がtestであるタグが一つ以上見つかればということ。

p20222068
質問者

お礼

なるほど! if文の中身について、デフォルトが配列の場合はnullではないこと、配列の長さは0ではないことと解釈するんですね。 おかげさまで説明がつきそうです、どうもありがとうございました!

関連するQ&A

  • getElementsByNameの要素数が取得できません。(ソース付)

    よろしくお願いします。 getElementsByNameを使って要素数を取得しようとしています。 しかし、tableタグの数が入っていません。 tableタグになる、nameは無効になるのでしょうか? <html> <head> <title>document.getElementsByName - 指定nameのエレメント全取得</title> </head> <!--指定nameのエレメント全取得のサンプル--> <script type="text/javascript"> function getElements() { var elements = document.getElementsByName("test") alert(elements.length + "個の要素が見つかりました") } </script> </head> <body> <input name="test" type="text"><br> <table name="test"></table><br> <input name="test" type="text"><br> <button onclick="getElements()">getElementsByName('test')</button> </html>

    • 締切済み
    • XML
  • javascriptでselectボックスの<OPTION>要素数の取

    javascriptでselectボックスの<OPTION>要素数の取得する方法について疑問があります。 データが1件の場合、複数件の場合とで分けて、 <OPTION>要素数を取得する処理を記述していますが、 データが1件の場合、 document.getElementsByName("sel").length で正しい値が取得できません。 詳しくは下記のソースを参照していただきたいのですが、 (1)、(2)、(4)は、正しい値'5'ですが、 (3)だけ誤った値'1'になります。 これはなぜでしょうか? javascript初心者のため、初歩的な質問かもしれませんが、 教えていただけたら嬉しいです。 よろしくお願い致します。 -------------------------------------- <HTML> <HEAD> <SCRIPT language="JavaScript">   function getSelLen(){ var oForm = document.form1; var sObj; var sObj2; //チェックボックスの数でデータが複数件か1件か判別しています。 if(oForm.chk.length){ //データが複数件の場合 for ( var i = 0; i < oForm.chk.length; i++ ) { sObj=document.getElementsByName("sel")[i]; alert("(1) "+ sObj.length); //・・・・(1) 正 sObj2=oForm.elements["sel"][i]; alert("(2) "+ sObj2.length); //・・・・(2) 正 } }else{ //データが1件の場合 sObj=document.getElementsByName("sel"); alert("(3) "+ sObj.length); //・・・・(3) 誤 sObj2=oForm.elements["sel"]; alert("(4) "+ sObj2.length); //・・・・(4) 正 } } </SCRIPT> </HEAD> <BODY> <FORM name="form1"> <TABLE> <TR> <TD> <INPUT type="checkbox" name="chk" > </TD> <TD> <SELECT name="sel" > <OPTION value="" selected> <OPTION value="00">00 <OPTION value="01">01 <OPTION value="02">02 <OPTION value="03">03 </TD> </TR> <!-- 複数件の場合 以下のコメントアウトを解除する --> <!-- <TR> <TD> <INPUT type="checkbox" name="chk" > </TD> <TD> <SELECT name="sel" > <OPTION value="" selected> <OPTION value="00">00 <OPTION value="01">01 <OPTION value="02">02 <OPTION value="03">03 </TD> </TR> --> </TABLE> </FORM> <FORM name="form2"> <INPUT type="button" onClick="getSelLen()" value=" selectの要素数 "> </FORM> </BODY> </HTML>

  • JavaScriptでBMI計算

    初めて質問しますので無礼があるかと思いますがお許しください。 JavaScriptを独学で勉強してます。そこでBMI計算ができるようなものを下のように様々なものを参考にしてつくってみたのですが、BMIがどんな値でも”低体重”しかでません。BMIの値によってそれぞれの警告画面が出るようにしたいんです;;どうすればいいのでしょうか?よろしくお願いします。 <HTML> <HEAD> <TITLE>関数のテスト</TITLE> <SCRIPT language="JavaScript"> <!-- function test() { if (aaa.h.value == "") { alert("身長を入力してください。"); return false; } if (aaa.w.value == "") { alert("体重を入力してください。"); return false; } height = document.aaa.h.value; weight = document.aaa.w.value; bmi = weight/height/100/height/100; if (aaa.bmi.value < 18.5) {          alert("低体重。"); }else{ if (aaa.bmi.value >25) { alert("肥満"); }else{ alert("標準") } } } //--> </SCRIPT> </HEAD> <BODY> <form name="aaa"> 身長:<input name = "h"><BR> 体重:<input name = "w"><BR> <input type="button" value ="測定" onClick = "test()" > <br> BMI:<input name = "bmi"> </form> </BODY> </HTML>

  • getElementsByNameで要素が取得できない

    久々にJavaScriptを組みました。 以下のソースコードなんですが、ボタンクリック時にalertで「1」 が表示されるはずだと思っているのですが、「0」が返ってきます。 何かおかしなところはありますでしょうか?宜しくお願いします。 <html> <head> <script language="javascript"> function test(){ var obj = document.getElementsByName("name1"); alert(obj.length); } </script> </head> <body> <div name="name1"></div> <button onclick="test();">TEST</button> </body> </html>

  • javascriptの記述方法

    javascriptをhtml内に記述する時、 <script type="text/javascript> ~~処理~~ </script> だと思っています。 ただ、ボタンをクリックした時に、メッセージが表示される簡単なHTMLをonclickで作成する時  <input type="button" value="クリック動作確認" onclick="alert('ボタンがクリックされました')"> これだけで実行されます。(headタグにscript記述なしで動作確認。) なぜ、<script>記述がなくても動くのでしょうか? onclick等のイベントハンドラに動作を記述する際は、そういう物だと覚えておいたほうがいいのでしょうか? ※当然関数をonclickに使用する際は、onclick=関数(); と記述し、headのscriptタグに関数を記述すれば動くというのは分かっているのですが・・・。 なぜ、 onclick="alert('ボタンがクリックされました')" の場合は、noscript無しで、動作するのかが分かりません・・・。 ・onclick 属性 = javascript という判断をどこかでされているのでしょうか? その結果、noscriptに記述がなくても動く? ちょっと気持ち悪いので質問させて頂きました。 ご教授お願いします。

  • Javascript onsubmit記述方法

    サイト制作をしているのですが、行き詰った箇所を教えてください。 form内でEnterキーを押したときに送信ページに飛んでしまわずに、次項目へ行くように(Tabの役割)するJavascriptと、確認用メールアドレスの項目を作るためのJavascriptを併用したいのですが、 onsubmitに"return CheckForm(this);"と"javascript:pageTracker._linkByPost(this)"を並列させる必要があるようなのですが、書き方を教えてください。 もし、そもそもの記述が間違っていたらご指摘ください。 ---- Javascript部分 <script type="text/javascript"> /*********************************************** * Disable "Enter" key in Form script- * By Nurul Fadilah(nurul@REMOVETHISvolmedia.com) ***********************************************/ function handleEnter (field, event) { var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; if (keyCode == 13) { var i; for (i = 0; i < field.form.elements.length; i++) if (field == field.form.elements[i]) break; i = (i + 1) % field.form.elements.length; field.form.elements[i].focus(); return false; } else return true; } </script> <script language="JavaScript" type="text/javascript"> function CheckForm(theform) { var FormOK = false; if (theform.mailaddress.value == "") { FieldControl(theform.To, "「メールアドレス」を入力してください。"); }else if (theform.mailaddresscheck.value != theform.email1.value ) { FieldControl(theform.To, "「メールアドレス(確認用)」を入力してください。"); }else if (theform.mailaddresscheck.value != theform.email1.value ) { FieldControl(theform.To, "入力されたものが一致するように入力してください。"); }else { FormOK = true; } return FormOK; } function FieldControl(element, message) { alert(message); } </script> ------- HTML部分(現状"Enter" key in Formのみ実装) <form action="" method="post" onSubmit="javascript:pageTracker._linkByPost(this)"> <table class="contact"> <tr> <th>メールアドレス <span class="red">※</span></th> <td><input type="text" name="mailaddress" id="textfield" class="type01" onkeypress="return handleEnter(this, event)" /></td> </tr> <tr> <th>メールアドレス確認用 <span class="red">※</span></th> <td><input type="text" name="mailaddresscheck" id="textfield" class="type01" onkeypress="return handleEnter(this, event)" /></td> </tr>

  • JavaScriptがFirefoxで動かない・・・

    よろしくお願いいたします。 IEでは正常に動作するのですが、Firefoxで実行してみると ボタンを押しても何の反応もありません。 どのように変更すればFirefoxで動作するのでしょうか? よろしくお願いいたします。 <SCRIPT LANGUAGE="JavaScript"> <!-- function warning(){ alert("テストです。"); } //--> </SCRIPT> <FORM><INPUT type="button" value="ボタンを押して。" onClick="warning()"></FORM> 上記のコードを外部に独立させて・・・ 【コード】 <script type="text/javascript" src="sample3.js"></script> <input type = "button" name = "button3" value = "sample3" onclick = "Func3();"> 【sample3.js】 function Func3() { alert("js外部ファイル記述"); } です。 FC2ブログで活用したいのですが・・・ 改行の扱いは「HTMLタグのみ」に設定しています。 ご回答、よろしくお願いいたします。

  • JavaScriptの記述を添削してください。

    アンケートフォームを作成して送信ボタンを押してから 送信確認メッセージを出るようにいたしました。 今までは送信確認メッセージは出さずに 必須項目の未入力部分のみの確認で行っていましたが 送信ボタンを押した後に送信確認メッセージを出してから OKなら送信、キャンセルなら元に戻るというようにしてみました。 自分で動作確認したところでは問題ないようですが、 JavaScriptは超初心者の為まったく自信がありません。 お手すきの方がいましたら 間違っている箇所などをご指摘くださいますでしょうか。 //入力確認 // function kakunin() { if (document.F2.名前.value == "") { alert("名前が入力されていません。"); document.F2.名前.focus(); return(false); } if (document.F2.ふりがな.value == "") { alert("ふりがなが入力されていません。"); document.F2.ふりがな.focus(); return(false); }  if (document.F2.メール.value == "") { alert("メールアドレスが入力されていません。"); document.F2.メール.focus(); return(false); } // //↓以下を付け足しました。 //送信確認 // myRet = confirm("送信します。よろしいですか?"); if ( myRet == false ) return(false); return(true); } <FORM name="F2" method="POST" action="***/mail.cgi" onsubmit="return kakunin()"><INPUT type="hidden" name="_to_" value="***@***.ne.jp"><INPUT type="hidden" name="_subject_" value="***"><INPUT type="hidden" name="_location_" value="***.htm"><BR> <INPUT type="submit" value="送信ボタン"> 上部、入力確認は今まで問題無く動作していました。 よろしくお願いします。

  • 「window.close()」を一括削除したい

    WEBでよく見かける「閉じる」ボタンについて質問です。 <a href="#" onclick="javascript:window.close();">画面を閉じる</a> <input type="button" onclick="javascript:window.close();" value="画面を閉じる" /> ↑のようなHTMLをJavaScriptで一括して削除したいです。 var elements = document.getElementsByTagName('*'); for (var i = 0; i < elements.length; i++) { if (elements[i].onclick == 'javascript:window.close();') { elements[i].style.display = 'none'; } } 上記のようなJavaScriptを書きましたが、if文のところでうまく動きません(当たり前ですね) 何か良い方法はありませんでしょうか。 ご教授願います。

  • IF文でタグの値を確認する

    全くの初心者です。 以下でmyIDには9が入っていると思うのですが <div id="hidden"> <input type="hidden" name="myID" id="myID" value="9"> Scriptで <script type="text/javascript"> if (myID = "9") alert("test"); </script> では反応しません。恐らく変数に値を持って行く方法が必要なのだ とは思うのですが お教え下さい。

専門家に質問してみよう