- PR -

JavaScriptの中でJAVAの変数を使いたい

投稿者投稿内容
キキ
常連さん
会議室デビュー日: 2005/08/31
投稿数: 29
投稿日時: 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+")\">");
では括弧内で「"」を使っています。

なんか伝わりきれてないみたいですね^^;
うまく説明できないのですが…
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-09-09 11:00
こんにちは

最初のソースではHTMLが
<input type=button value="並べ替え" onClick="sort(AAAA,BBBB)>
になってしまいます。

<input type=button value="並べ替え" onClick="sort('AAAA','BBBB')>
のように出力されなければならないと思います。

で、修正は以下のように
コード:
out.print("<input type=button value=\"並べ替え\" onClick=\"sort("+line+","+line2+")\">"); 


の部分を
コード:
out.print("<input type=button value=\"並べ替え\" onClick=\"sort('"+line+"','"+line2+"')\">"); 


にしたらいいんじゃないですか?

キキ
常連さん
会議室デビュー日: 2005/08/31
投稿数: 29
投稿日時: 2005-09-09 11:05
ありがとうございます!
エラーは消えました!
でも画面がなんの変化も起こさない…。

また原因さぐってみますm(_ _)m
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-09-09 11:20
引用:

キキさんの書き込み (2005-09-08 17:27) より:
String line = "AAAA";
String line2 = "BBBB";
※中略
out.print("<input type=button value="並べ替え" onClick="sort("+line+","+line2+")">");



これだと
<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/08/31
投稿数: 29
投稿日時: 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
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2005-09-09 12:16
JavaScriptが実行されるのは、表示し終わってユーザがボタンをクリックした後であって、
out.print(line);は表示されるもっと前です。
なので、この形でout.print(line)で"BBBB"を表示することはできません。
せんせ
会議室デビュー日: 2005/09/08
投稿数: 12
投稿日時: 2005-09-09 12:52
ども。せんせといいます
気になった点がありますので質問させてください。
JavaScriptで
>out.print("return a;");
とありますが、ソース上でこの値を表示するところが見当たらないのですが。。。

もし、
>out.print(line);
で結果を表示したいのならちょっと違うと思います。
現状だとlineは必ず"AAAA"になってしまいますよね?

[ メッセージ編集済み 編集者: せんせ 編集日時 2005-09-09 12:53 ]
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 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;");
のような行を挿入しなければダメだと思います。

まとめるとこんな感じ
コード:
String line = "AAAA"; 
String line2 = "BBBB"; 

out.print("<script type=\"text/JavaScript\">"); 
out.print("function sort(a,b){"); 
out.print("a = b;"); 
out.print("debug.innerHTML=a;"); // debug要素にaの内容を表示
out.print("return a;"); 
out.print("}"); 
out.print("</script>"); 

out.print("<input type=button value=\"並べ替え\" onClick=\"sort('"+line+"','"+line2+"')\">"); 
out.print("<p id=\"debug\">" + line + "</p>"); // 表示用のdebug要素


スキルアップ/キャリアアップ(JOB@IT)