• ベストアンサー

javascriptのarertについて

最近javascriptの勉強を始めたのですが, var i = 3; arert = ("i"); とか var j =[1, 2, 3] arert = ("j[2]") などしますと、数字ではなくて、iなどの文字が表示されてしまいますよね? またfor(i=0; i<5;i++){ var sample_i = i } などしても多分sample0~sample_4まで定義したことにはなりませんよね? そこで質問なんですが、javascriptではこういった文字と数字をどうやって判別してるんでしょうか? また上の例のコードを書き直してくれたら嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.4

JavaScript の文法ですが、ザックリ言うと * 数字(0-9)で始まる単語は、数値型(number)の値 * 引用符("')で始まり引用符で終わる単語は、文字列型(string)の値、ただし引用符は除く * 英字(A-Za-z$_)で始まる単語は、同名の変数が指し示す(格納されている)値 * カギ括弧([])で囲まれた単語は、直前に示されたオブジェクト内の同名のプロパティが指し示す値 と解釈されますので // 引用符で始まっている単語 "i" は文字列型の値なので、そのまま表示 alert("i"); // 「i」を表示 // 英字で始まっている単語 i は変数なので、指し示す数値型の値(3)を文字列にして表示 alert(i); // 「3」を表示 // 英字で始まっている単語 j は変数なので、指し示す配列型オブジェクト(Array)の、 // カギ括弧で囲まれた単語 2 と同名のプロパティ(2)が指し示す、 // 数値型の値(3)を文字列にして表示 alert(j[2]); // 「3」を表示 // 英字で始まっている単語 sample_i と同名の変数を作成し(中略)値を代入 var sample_i = i; 「sample_i」の例ですが、書き換えるとしたら -- eval("sample_" + i + " = " + i + ";"); // 行儀良くない -- window["sample_" + i] = i; // 割とマシだがやはり良くない -- var sample = new Array(); ... sample[i] = i; // かなり良い -- var obj = new Object(); ... obj["sample_" + i] = i; // 応用性があってオススメ

lelexxxx
質問者

お礼

なるほど。javascriptでは、C言語のように型は指定する必要がないということですね。 分かり易い説明ありがとうございました。

その他の回答 (3)

回答No.3

for(var i=0; i < 5; i++) window['sample_'+i] = i; alert([ sample_0, sample_1, sample_2, sample_3, sample_4 ]); 使うことはないだろうけど。

noname#244856
noname#244856
回答No.2

関数の引数を「"」でくくらなければいけないという決まりはありません。文字列をくくればいいだけです。変数として扱わなければならないものを「"」でくくってしまったら文字列になっちゃって当然ですよね。 alert(i); alert(j[2]); こういうことですか?素直に配列使えばいいだけだと思いますが… (配列を使わずに連番変数を使おうという発想自体がまずナンセンスです) http://blog.livedoor.jp/jimuguri/archives/50690071.html

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.1

""で囲まれた部分は文字列と認識されます。 普通に英数字を書いた場合は、forやif等の予約語を除いて変数や関数の名前になる識別子と認識されます。 識別子には英数字の他に_や$等の文字を使えます。 alert("i"); だとalert関数に文字列iを渡すことになります。 変数iの値を渡したい場合、 alert(i) としてください。 また、後者の例は基本的にできません。 そのように区切られた箱を使いたい場合は、配列という専用の仕組みが用意されているのでそちらを使います。 var sample = []; for(i=0; i<5; i++) { sample[i] = i }

関連するQ&A

  • javascript 初心者です 変数について

    javascript 初心者です 変数について html内のbodyに次のように記述しています。 <script type="text/javascript"> <!-- var hensu1=7; var hensu2=2; var hensu3=5; var hensu4=4; for(i=1;i<=4;i++){ document.write("<div>"); for(j=1;j<="hensu"+i;j++){ document.write("<img src='sample.png'/>"); } document.write("</div>"); } --> </script> for(i=1;i<=4;i++)でdivを4つ並べ、 その中にそれぞれsample.pngをhensu分だけ並べ対のですが、 for(j=1;j<="hensu"+i;j++)の部分で "hensu"+i の記述の仕方が分からず、 上記の書き方だと表示されません。 正しい書き方を教えていただけないでしょうか?

  • Javascript初心者です。

    Javascript初心者です。 どうしてもわからなくて困っています。 下の図のように1から、最大10個の☆をalertで表示させるものをつくったのですが ☆ ☆☆ ☆☆☆ ☆☆☆☆ ~ ☆☆☆☆☆☆☆☆☆☆ for(var i = 1; i <= 10; i++){ //alert("☆"); var star = ""; for(var j = 1; j <= i; j++){ star += "☆"; }     alert(star); } これを用いた2つの応用問題に苦戦しています。 (1)偶数の場合は★のみで表示 ☆ ★★ ☆☆☆ ★★★★ ~ ★★★★★★★★★★ (2)偶数の番号の☆マークが★に ☆ ☆★ ☆★☆ ☆★☆★ ~ ☆★☆★☆★☆★☆★ といったものです。説明がわかりづらいかもしれませんが、 偶数、奇数をif文で条件分岐することは理解しているのですが、 web上で調べてもわからず、ループの階層構造がイメージできないまま苦戦しています。 どなたか宜しくお願い致します。

  • JavaScript、;がない?

    Google Apps Scriptでプログラムを書きました。 すると、「ステートメントの前に;がありまあせん。(行6、ファイル「コード」)」と表示されます。 プログラムは、以下のとおりで、6行目とは、「If」文のところです。 しかし、私には、そのようなエラーが出ている理由が分からないのですが、どなかたお教えください。 function myFunction() { var s = SpreadsheetApp.GetActiveSheet(); var l = s.getMaxRows(); for (var i = 1; i < l; i = i + 1) { for (var j = 2; j <= l; j = j + 1) { If (s.getRange(i, 1).getValue == s.getRange(j, 1).getValue && s.getRange(i, 2).getValue == s.getRange(j, 2).getValue) { s.getRange(j, 1: j, 2).setBackgroundColor('aqua'); } } } }

  • javascriptに関する質問です

    9×9のます目一つ一つに・を表示させるプログラムをつくっているのですがなかなかうまくいきませんどなたかご教授ください <script language="JavaScript" type="text/javascript"> <!-- document.write("<center>"); document.write("<h1>・の表</h1>"); document.write("<table border>"); var i; var j; for (i =・;i=<9 ){ document.write("<tr>"); for(j =・;j=<9 ){ document.write("<td>"); document.write(i * j) document.write("</td>") } document.write("</tr>"); } document.write("</table>"); //--> </script>

  • javascriptでカレンダーを作る方法

    下に書いてあるjavascriptを書き換えて、一番上のマスごとにはsun・mon・tue・wed・thu・fri・satと書かれ、その下の水曜日(wed)のマスから順に1~30まで一マスごとに数字を入れられ、sun・5・12・19・26は赤文字で書かれ、1より前のマスや30以降のマスは空欄のカレンダーを作るにはどうすればいいでしょうか? <!DOCTYPE html> <html lang="java"> <head> <meta charset="utf-8"> <title>sample</title> </head> <body> <script> var table=document.createElement("table"); table.setAttribute("border",1); var tbody=document.createElement("tbody"); for(var i=0;i<4;i++){ var tr=document.createElement("tr"); for(var j=0;j<7;j++){ var td=document.createElement("td"); var txt=i*7+j+1; td.appendChild(document.createTextNode(txt)); tr.appendChild(td); } tbody.appendChild(tr); } table.appendChild(tbody); document.getElementsByTagName("body")[0].appendChild(table); </script> </body> </html>

  • Javascript; フィールドの属性変更

    作成したフォームに対してJavaScriptでの処理を行おうとしています。 セットした社名やDB検索した値の属性変更をしたいのですが、下記エラーが表示されます。 どのような対策がございますか? SCRIPT5007: プロパティ 'readOnly' の値を設定できません: オブジェクトは Null または未定義です。 SCRIPT5007: プロパティ 'onchange' の値を設定できません: オブジェクトは Null または未定義です。 下記のJavaScriptでの処理を行おうとしています。 function SetEvent() { document.getElementById("CompanyTextBox").readOnly="readonly";  //ここで、エラーになります。 //DB検索処理........ //配列 var counter = 0; var code = new Array(); for (var i = 0; i <10; i++) { code[i] = new Array(); code[i][0] = 'TextBox' + ((i * 4) + 1); code[i][1] = 'TextBox' + ((i * 4) + 2); document.getElementById(code[i][1]).readOnly="readonly"; //ここで、エラーになります。 } //検索結果のセット do { var elem = document.getElementById(code[counter][0]); elem.onchange = function(event) //ここで、エラーになります。 ・ ・ counter++; } while(counter < 10) }

  • JavaScriptで九九

    繰り返し処理を用いて画像のように表示させたい場合はどこを修正すればいいですか? <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>九九</title> </head> <body> <script> for (var i = 1; i <= 9; i++) { for (var j = 1; j <= 9; j++) { document.write(`${i} * ${j} = ${i*j}<br/>`); } } </script> </body> </html>

  • Javascriptについて教えてください。

    Javascriptについて教えてください。 整数を入力してその入力した整数の約数の数を表示するプログラムを つくりたいのですがどうすればよいのでしょうか? 例えば、6と入力したらブラウザ上に約数の個数つまり、4と表示します。 また0以下の数字は整数を入力してくださいと表示されるようにしたいです。 途中までは作りました。 解説付きで教えてください。 <html> <head> <title>整数の約数の数を表示する</title> </head> <body> <p><script type="text/javascript"> <!-- var number; var i; number = prompt("整数を入力してください"); for(i = 0; i < 10;i++){ if(number <= 0) document.write("整数を入力してください。"); else if(number >= 1)

  • javascript 変数定義について

    javascript 変数定義について 下記のように変数を大量に定義しなければならないとき forなどを使って簡単に書くにはどのようにしたら良いでしょうか? よろしくお願いいたします。 var n1=1; var n2=1; ・ ・ ・ var n99=1; var n100=1;

    • ベストアンサー
    • HTML
  • javascriptで編集可能不可能の切り替え

    いつもお世話になっております。 javascriptを用いて、テキストボックスを状況によって編集可能、不可能を 変更するものを作っております。 現在、テキストボックス単品ではその動作が可能となっていますが、 複数のものに対してその動作を行うには、どうすればよいかわからず困っています。 現在のソースは以下のようになっています。必要な部分だけ抜き出しています。 <script type="text/javascript"> function display() { var tmp = prompt("password?",""); //表示させるかどうか判別する if (tmp == 1) { document.getElementById("textboxのID").readOnly = false; } else if (tmp == 2) { document.getElementById("textboxのID").readOnly = true; } } </script> <body onload="display();"> ・・・・ </body> テキストが一つや二つ程度ならこれでも十分ですが、今回は テキストボックスが多数(100程度)あるので、このまま地道にやるのはどうかと思いました。 IDを数字にして、 for (var i = 0; i < 100; i++) { document.getElementById(i).readOnly = true; } とやってみましたが、これもdocument.getElementById("0") = true;単品では 成功しましたが、iが定義されていないというようなエラーメッセージが表示されて、 うまくいきませんでした。 以上の件を、ご教授お願いします。

専門家に質問してみよう