例えばフォームに値を入力するスクリプトを書いたとします。
そのフォーム部分は
<form name = “form”>
<input type=”text” name=”box1″ ・・・>
とあったとしましょう(要するにフォームの名前はformで、テキストボックスの値はbox1)。
このbox1に値を代入するとき、スクリプトは
form.box1.value = “hogehoge”
になりますよね。これは分かります。オブジェクトとプロパティの間は「.(ドット)」で区切られるのがルールですから。
でも、ボックスに割り当てられているナンバリング部分をfor文で処理した場合は、その表記が少し異なります。
for (i = 1; i <=5; i++){
var t-box = “box” + i;
というふうに、boxの後にくるナンバリングをforで自動的に補うようにすると、先の値代入の部分はなぜか
form[t-box].value = “hogehoge”
になるみたいなんです。
ってゆーか、なるんです。
なにが変な感じがするかって?
そりゃ、formと[box]の間に「.(ドット)」が入らないんです。
普通に考えたら
form.[t-box].value = “hogehoge”
になりそうに思いませんか?
だって、オブジェクト・プロパティ間はドットでつなぐのがルールなんじゃ・・・(~_~;;
でもルールに従ってこの表記にすると値の代入が行われ無いんですねー。なんでだ?
・・・教えて、エロい人!!