HTMLとスタイルシートしかわからず、初のプログラミング言語としてJavascriptを選びました。
とりあえず入門書籍のサンプルを見ながら勉強しているのですが、
さっそくfor文というか、値の型?で混乱してます。。
【Javascript部分】
function doClick(){
var str = ""; //←(1)
var n = document.form1.select1.options.length;
for(var i = 0;i < n;i++)
if (document.form1.select1.options[i].selected)
str += document.form1.select1.options[i].value + ","; //←(2)
var str = "選択項目:" + str ;
document.getElementById("showText").innerHTML = str;
}
【HTML部分】
<p>※テスト用ページ</p>
<div name="showText" id="showText">(※未設定)</div>
<form name="form1">
<select name="select1" size="3" multiple>
<option value="あいうえお">あいうえお</option>
<option value="かきくけこ">かきくけこ</option>
<option value="さしすせそ">さしすせそ</option>
</select>
<input type="button" value="送信" onClick="doClick();">
</form>
options.lengthで配列の総数を数えて、真偽値を調べfor文で繰り返し、結果を反映させる部分はわかります。
わからない部分は、
(1)「var str = "";」の「""」は空の文字列を代入?ということでしょうか?
試しに消し見ると「undefined」が記述されるのですが……
型を定義してないと起こる?問題のようで、型の宣言のようなものということでしょうか?
(2)str += document.form1.select1.options[i].value + ",";
for文中で、最初の一回目は「""+あいうえお+","」、二回目は「""+あいうえお+","+かきくけこ+","」……と繰り返されていくと思うのですが、(1)の意図がわからないので、「""」の空部分の意味が理解できません。
たぶんとるに足らない疑問のような気がするのですが……
ご教授いただけるとうれしいです。
※蛇足なんですが、for文やif文に中括弧{}がついてなくても動きはしますが、つけないのがベターなのでしょうか?
(入門書籍なのでスタンダートを書いてるとは思うのですが……)
No.3ベストアンサー
- 回答日時:
さらに蛇足。
var a;
a +=1;
だとaが初期化されていないのでError!
それこそundefnedなので、0なのかnullなのか?!
人間が勝手に0だと思っているだけ。文字列でも同じ
勝手に""だと思ってるだけ。
for if while などの後ろにつける {}ですが、自分の場合
forも含めて一行で用事を済ませられるなら{}は省略しています
可読性は悪化しますが、
a=b=c=d=e=1;
if( a=b ) e=(b=2,c=3,d=4,5);//a==bではない。1行で複数動作
alert([a,b,c,d,e]);
if( 式 )の式の部分が 0 or "" 以外なら実行されるので
a=b は代入式ですが1を返すので実行されます
(式1,式2,式n,…)は一番最後の数値を返すとか。
まぁ~こんなの使う人は多くありませんが
1行で済ませたい場合使います。
そう!私は短いコードが好きです。
回答ありがとうございます。
>というか(3)は不要。
わたしも、なんで二回書くのかは疑問でした。
教科書がベストとは限らないようで困ります(苦笑)
>document.form1.select1 は、教科書が古いかな?
2007年7月刊行の書籍ですが……あんまり過信しないようにします(^^;
「初期化」ということで、すんなり理解できました。
ちゃんとコンピュータがわかるように定義しないといけない、ということですね。
{}は、とりあえず最初のうちはつけ忘れをしないように、一行でもつけていこうと思っています。
HTMLなら打ち忘れでエラーが出ませんが……プログラミングはシビアですね、セミコロン一個を許さないようで(汗
No.2
- 回答日時:
本題とは関係ないけど
function doClick(){
var str = ""; //←(1)
var n = document.form1.select1.options.length;
for(var i = 0;i < n;i++)
if (document.form1.select1.options[i].selected)
str += document.form1.select1.options[i].value + ","; //←(2)
var str = "選択項目:" + str ;←(3)
document.getElementById("showText").innerHTML = str;
}
どうせ(3)で"選択項目:"を最初にするので(1)の段階でそれを代入。
(3)でもう一度var str = とするのも変。
というか(3)は不要。
document.form1.select1 は、教科書が古いかな?
selectにidを振り、document.getElementById で使う
No.1
- 回答日時:
変数は、宣言した直後は中に何が入っているか不定です。
なので、確実に「空っぽ」の変数にするために「""」で初期化しています。
for文やif文に中括弧が付いていないのは、後に続く式が一つの時だけです。複数の式が付くときは{}をつけてブロックにしないといけません。
逆に言うと、一つしか式がなければどちらでも構いませんよ。
でも、人のコーディングしたソースを見ると判りますが、{}が付いていないif文やfor文はぱっと見判りづらいです…。(私だけ?)
他の方の意見と照らし合わせて、「初期化」ということで妙にしっくりきました。
個人的には、やはり仰るように{}があったほうがわかりやすいと思います。
テキストに愚痴ても仕方ありませんが、こう書けよと書いておいて、いきなり端折るのはどうかなぁとか思ったりしました(苦笑)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウン 項目が多いので先頭...
-
Selectボックスの幅を自動で広...
-
Selectの中身をfor文で入れる
-
セレクトの値を取得できない
-
現在時刻を取得してフォームのs...
-
return trueとreturn falseの用...
-
javascriptでhiddenに二次元配...
-
formのfileの値をhiddenでも持...
-
javascriptでクイズ
-
【UWSC】HTML内のある部分を抽...
-
javascriptでセレクトボックス...
-
特定<table>内の<td>の色を変える
-
追加ボタンを押した際に ok ボ...
-
innerHTML内では改行は禁止?
-
submitした値を返したい
-
ファイル選択ダイアログが表示...
-
JavaScriptde途中で、「exit」...
-
1つのform内に2つのsubmitボタ...
-
value内に変数を入れたい
-
一覧から選択した行の行番号を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウン 項目が多いので先頭...
-
Selectボックスの幅を自動で広...
-
Selectの中身をfor文で入れる
-
html selectの内容を初期値に戻す
-
JQuery selectが反映されない
-
jQuery セレクトボックスで選択...
-
CSVファイルを読みこみ、プルダ...
-
セレクトを全て選択されていな...
-
現在時刻を取得してフォームのs...
-
セレクトの値を取得できない
-
リストボックスの項目の順番を...
-
onchange等のイベントハンドラ...
-
テーブルにおける行(セルにプル...
-
onFocusOutが複数回呼ばれる!
-
javascriptでプルダウンメニュ...
-
ブラウザの戻るボタンを押した...
-
<textarea>にプルダウンを表示...
-
javascriptでの2つのプルダウン...
-
selectタグに直接onChangeを書...
-
window.openで新しいタブが開か...
おすすめ情報