- - PR -
JavaScriptの中でJAVAの変数を使いたい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-09 11:00
<input type=button value="並べ替え" onClick="alrt("OK")">
そうですね、 <input type=button value="並べ替え" onClick="alrt(\"OK\")"> こうじゃないとだめですね。 で私が出てるエラーもこれと同義のエラーなのはわかっているのです。 でも、JAVAで宣言した型を中で使おうとしたら「"+〜+"」で外にでなきゃいけないので out.print("<input type=button value=\"並べ替え\" onClick=\"sort("+line+","+line2+")\">"); では括弧内で「"」を使っています。 なんか伝わりきれてないみたいですね^^; うまく説明できないのですが… | ||||||||
|
投稿日時: 2005-09-09 11:00
こんにちは
最初のソースではHTMLが <input type=button value="並べ替え" onClick="sort(AAAA,BBBB)> になってしまいます。 <input type=button value="並べ替え" onClick="sort('AAAA','BBBB')> のように出力されなければならないと思います。 で、修正は以下のように
の部分を
にしたらいいんじゃないですか? | ||||||||
|
投稿日時: 2005-09-09 11:05
ありがとうございます!
エラーは消えました! でも画面がなんの変化も起こさない…。 また原因さぐってみますm(_ _)m | ||||||||
|
投稿日時: 2005-09-09 11:20
これだと <input type=button value="並べ替え" onClick="sort(AAAA,BBBB)"> になって、AAAAやBBBBが宣言されていないっていうエラーになるような 推測ですが、書かれていない部分でlineとline2に数値をセットしてるのでしょう。 それで、sortの引数は数値にしたいため、呼出し時の引数をシングルコーテーションで括りたくないと言うことだと受け取りました。 で、エラーからすると、出力されたHTMLで↓のように引数が欠落しているのでは?と考えられます。 <input type=button value="並べ替え" onClick="sort(,)"> <input type=button value="並べ替え" onClick="sort(AAAA,)"> <input type=button value="並べ替え" onClick="sort(,BBBB)"> まずは出力されたHTMLソースがどうなっているかを確認して下さい。 で、上のようになっていた場合は、lineとline2に想定した値が設定されているかを単体でout.printして確認してみて下さい。 [個人的な意見] 私はサーバ側の動的な値をクライアントサイドスクリプトの引数にするときは、数値でも''で括って、スクリプト内で数値に変換するようにしますね。 そっちの方が想定外の事象が起こりにくく、デバックもし易いと感じています。 [/個人的な意見] | ||||||||
|
投稿日時: 2005-09-09 11:30
現在こんな感じになってます。
String line = "AAAA"; String line2 = "BBBB"; out.print("<script type=\"text/JavaScript\">"); out.print("function sort(a,b){"); out.print("a = b;"); out.print("return a;"); out.print("}"); out.print("</script>"); out.print("<input type=button value=\"並べ替え\" onClick=\"sort('"+line+"','"+line2+"')\">"); out.print(line); でっち6号さんの言う通り「宣言されていません」と言うエラーも「(""+line+","+line2+"")」とかしている時にでてきました。 lineとline2は上の通り文字列です。(本当はもっと長いですが) 出力されたHTMLのout.print("<input type=button value=\"並べ替え\" onClick=\"sort("+line+","+line2+")\">"); の「+line+」のとろこには、ちゃんと値がはいっていました。 クリックしても値が入れ替わってくれないので現在いろんなところに「out.print」を入れて試してます。 現状報告とお礼でしたm(_ _)m | ||||||||
|
投稿日時: 2005-09-09 12:16
JavaScriptが実行されるのは、表示し終わってユーザがボタンをクリックした後であって、
out.print(line);は表示されるもっと前です。 なので、この形でout.print(line)で"BBBB"を表示することはできません。 | ||||||||
|
投稿日時: 2005-09-09 12:52
ども。せんせといいます
気になった点がありますので質問させてください。 JavaScriptで >out.print("return a;"); とありますが、ソース上でこの値を表示するところが見当たらないのですが。。。 もし、 >out.print(line); で結果を表示したいのならちょっと違うと思います。 現状だとlineは必ず"AAAA"になってしまいますよね? [ メッセージ編集済み 編集者: せんせ 編集日時 2005-09-09 12:53 ] | ||||||||
|
投稿日時: 2005-09-09 13:00
入れ替わった文字列を表示したい場合は
out.print(line); じゃダメです。 out.print(line); を out.print("<p id=\"debug\">" + line + "</p>"); 等のように変更し out.print("return a;"); の前の行に out.print("debug.innerHTML=a;"); のような行を挿入しなければダメだと思います。 まとめるとこんな感じ
|