javascriptの文字列の連結について

このQ&Aのポイント
  • ダブルクォーテーションを二回使用しているのでエラーになりそうですが、なぜ[j]と返ってくるのでしょうか?
  • javascriptの中でダブルクォーテーションで囲われた部分は文字列になると認識されます。
  • alert関数の引数の文字列内では、ダブルクォーテーションを使用すると文字列の連結が正常に行われます。
回答を見る
  • ベストアンサー

javasccriptの文字列の連結について

javasccriptの文字列の連結について charAt()というメソッドを用いて、 以下のサンプル <html> <head> <title>for sample</title> </head> <body> <script type="text/javascript"> <!-- str ="javascript" var ch1=str.charAt(0); alert("[" + ch1 +"]") //--> </script> </body> <html> を実行した際に アラートで[j]と返ってくるのですが、 (1)alert("[" + ch1 +"]")の部分を (2)alert("[ + ch1 +]") とした場合は[+ ch1 +]が返ってきます。 また、 (2)alert(["+ ch1 +"]) とした場合には+ ch1 +が返ってきます。 javascriptの中でダブルクォーテーションで 囲われた部分は文字列になると認識しているのですが、 なぜ、 (1)alert("[" + ch1 +"]")の場合は アラートで[j]と返ってくるのでしょうか? ダブルクォーテーションを二回使用しているので そもそもエラーになりそうな気がするのですが・・。 もしよろしければ、ご指導お願い致します。

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

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

>javascriptの中でダブルクォーテーションで囲われた部分は文字列になると認識しているのですが、 これは合ってます。 alert("[" + ch1 +"]") を文法構成要素に分解すると、 alert → 名前(メソッド名) ( → カッコ(関数呼び出しを示す) "[" → 文字列 + → 演算子(文字列連結演算子) ch1 → 名前(変数名) + → 演算子(文字列連結演算子) "]" → 文字列 ) → カッコ(関数呼び出しを示す) となります。

SUM1200
質問者

お礼

わかりやすい説明ありがとうございます! 理解できました☆

関連するQ&A

  • このタグで文字の大きさを変えたいのですが、、、、

    <head> <title>文字色をリアルタイムに変える</title> <script Language="JavaScript"><!-- count = 0; function changeColor(str) { txt = document.all["strID"].innerText; c = str.charAt(count); txt = txt.fontcolor("#"+c+c+"0000"); document.all["strID"].innerHTML = txt; count++; if (count > str.length) count = 0; setTimeout("changeColor('"+str+"')",100); } // --></script> </head> <body onLoad="changeColor('0123456789abcdefedcba987654321')"> <div id="strID" style="font-weight:900">ここの文字の色が変わるよ~ん</div> </body>

    • ベストアンサー
    • HTML
  • setTimeout関数の使用方法について

    はじめまして。 質問があります。 以下のコードを実行すると、一定時間おきに文字の表示が変化する ように動いてくれません。何が問題なのかがまったく見当がつき ません。どなたかご指摘をお願いします。 ---------------------------------------------------------------- <html> <head> <title>setTimeout()関数の使用例</title> </head> <body onLoad="timer=setTimeout('changeChar()',500)"> <script type="text/javascript"> <!-- var str = "abcdefghijklmnopqrstuvwxyz0123456789"; var cnt = 0; function changeChar() { clearTimeout(timer); ch = str.charAt(cnt++); document.write(ch); if(str.length > cnt) { timer = setTimeout("changeChar()",500); } } //--> </script> </body> </html> ----------------------------------------------------------------

  • base64encodeでの文字化けについて

    先日、PHPとjavascriptのエンコードについて質問をしました。 http://okwave.jp/qa/q8512040.html その後いろいろと試してみたところ、javascript上で 日本語の文字列に対してbase64_encodeをして、 base64_decodeをすると文字化けが起こりました。 ソースは以下の通りです。 <html> <head> <title>サンプル</title> <script type="text/JavaScript" src="base64.js"></script> </head> <body> <script type="text/javascript"> <!-- str="abcde12345あいうえお"; encode_str=base64encode(str); decode_str=base64decode(encode_str); document.write("元の文字列:"+str+"<br>変換後の文字列:"+decode_str); // --> </script> </body> </html> base64.jsは以下のサイトのものを使用しています。 http://www.onicos.com/staff/iz/amuse/javascript/expert/ 結果は以下の通りです。 元の文字列:abcde12345あいうえお 変換後の文字列:abcde12345BDFHJ 文字コードはUTF-8を使用しているのですが、他の文字コードで 試してみても文字化けします。 原因や対処方法がおわかりの方がいらっしゃれば、教えて下さい。 よろしくお願いします。

  • 文字列の表示/非表示

    下記のコードで、ボタンを押すたびに、 sample1 sample2 sample3 の3個の文字列の非表示/表示が切り替わるようにしたいのですが、 alert(elements.length+"個の要素を取得しました"); の実行で、class="sample"のエレメントの個数は正しく取得できているようなのですが、 elements.style.display = elements.style.display == "none" ? "block" : "none"; で非表示/表示が切り替わってくれません。 何か書き方が悪いのでしょうか? ご経験のある方、御教示ください。 <html> <head> <title>document.getElementsByClassName - class名を元にエレメントを取得する</title> </head> <!--class名を元にエレメントを取得するのサンプル--> <script type="text/javascript" src="prototype.js"></script> <script type="text/javascript"> <!-- function execute() { var elements = document.getElementsByClassName("sample"); alert(elements.length+"個の要素を取得しました"); elements.style.display = elements.style.display == "none" ? "block" : "none"; } //--> </script> <body> <div id="sample1" class="sample" style="display:none;">sample1</div> <div id="sample2" class="sample" style="display:none;">sample2</div> <div id="sample3" class="sample" style="display:none;">sample3</div> <button onclick="execute()">サンプル実行</button> </body> </html>

  • PHPの文字列をJavascriptの変数にする

    PHPの変数に格納された文字列を、直接Javascriptの変数の一部として格納しようと考えています。 例:) <script> var txt = "<?php echo $text; ?>"; </script> しかし、$textにダブルクォーテーションなどの文字が含まれていると、スクリプト全体が破綻します。今のところ、PHPの中で、問題を起こしそうな文字列を変換するように処理しています。 例:) $text = str_replace("\\", "\\\\", $text); $text = str_replace("\"", "\\\"", $text); $text = str_replace("\n", "\\n", $text); これよりもスマートな方法(たとえば用意されている関数を使うなど)がありますでしょうか。

    • ベストアンサー
    • PHP
  • 引数付きで呼び出す関数・配列・name(id)のつけ方・・・?

    引数付きで呼び出す関数・配列・name(id)のつけ方・・・? 何を質問したいのかわからないタイトルになってしまいましたが とりあえず下のソースコードを見てください(実行してください)。 <html> <head><title>up</title> <script language="JavaScript"> <!-- num=new Array("5","5"); str=new Array("*****","*****"); function up(j) { num[j]++; str[j]+="*"; text[j].innerHTML=num[j]+str[j]; } //--> </script> </head> <body> <input type="button" value="1" onClick="up(0)"><div id="text1">5*****</div><br> <input type="button" value="2" onClick="up(1)"><div id="text2">5*****</div> </body> </html> 1のボタンを押すと上の文字列が反応し、2のボタンを押すと 下の文字列が反応するプログラムを書きたいのですが、どっちの ボタンを押して関数が呼び出され、どっちの文字列に処理を するか区別することができません、どうしたらよいのでしょうか? 下のようにひとつの時はできました・・・。でもふたつの時は どうしたらいいのかわかりません。 <html> <head><title>up</title> <script language="JavaScript"> <!-- num=5; str="*****"; function up() { num++; str+="*"; text1.innerHTML=num+str; } //--> </script> </head> <body> <input type="button" value="1" onClick="up()"><div id="text1">5*****</div> </body> </html>

  • javascriptでalertの文字列をコピー

    初歩的な質問になるかもしれませんが、 javascriptのalertを使用し、表示された文字列をコピペ出来る方法はありますでしょうか? したいことは、下記のalertで表示された【てすと】という文字をコピーして、 editorやワードなどに貼り付けることです。 ブラウザによって異なるのは実証済みです。 FireFoxでは、文字の反転はOKだが右クリックがきかない(Ctrl+Cでコピー・貼り付けはOK) Chrome・IE では反転不可。 多くのブラウザでも同じように簡単にコピーできる方法があれば御教授ください。 <html> <head> <head/> <body> <script language="javascript"> <!-- function aaa(text) { alert(text); } --> </script> <a href="javascript:void(0);" onclick="aaa('てすと');">onclick</a> </body> </html> 以上、宜しくお願い申し上げます。

  • JavaScriptのinnerHTMLの挙動について

    下で"JavaScript内からJavaScriptを書き出したいのですが"で質問したものですが,ソースコードを簡単にして再質問したいと思います. ソースは以下のようにし,divタグのところにinnerHTMLで文字"test"とJavaScriptでアラートを表示させるものです.表示してみたところ,"test"は表示されるのですが,アラートは出てきません. これはinnerHTMLではHTMLのタグは評価されるが,JavaScriptは評価されない,ということなんでしょうか.JavaScriptのこのような仕様は調べにくいので困っています.回答宜しくお願いします. <html><head><title></title> <SCRIPT type="text/javascript"> <!-- var str='<font color="blue">test</font><script type="text/javascript">alert(123);</script>'; function gogo(){ document.all("here").innerHTML = str; } //--> </SCRIPT> </head><body> <div id="here" style="position:absolute;width:600px;left:0px;top:0px;"></div> <SCRIPT type="text/javascript"> <!-- gogo(); //--> </SCRIPT></body></html>

  • VBAの文字列の中に”(全角のダブルコーテーション)を使う

    VBAのStringの中に”(全角のダブルコーテーション)を使おうとしているのですが、VisualBasicEditorにより自動的に ""(半角のダブルコーテーション2つ)に変換されてしまいます。 Dim str as String str = "abc”def"    ↓ str = "abc""def" 文字列中に全角のダブルコーテーションを使う方法を教えてください。よろしくお願いします。

  • CSSのJavaScript参照

    JavaScriptによって変数に代入された文字列をCSSで参照し、 指定した場所に表示したいのですが、変数名が表示され代入された文字列が表示されません。 ソース <html><head> <title>a</title> <style type="text/css"> <!-- .str{ top:100px; left:10px; position:absolute; }--> </style> </head> <body> <div class="str3">str();</div> //ここで変数strに代入されたaを表示したい <SCRIPT LANGUAGE="JavaScript"> str = "a"; str(){document.write(str);} </SCRIPT></body></html> 初心者のため、間違いが多々あると思いますがよろしくお願いします。

専門家に質問してみよう