• 締切済み

jqueryでの表示について

jqueryを使用したjavascript上で、「変数 userId」を用意しました。 この後ろに英数記号をつけたものをuniqueid5としました。 var uniqueid5 = userId+'Qre3I'; 出来たこと $('input[name~="uniqueid5"]').val(uniqueid5); とし、 <input type="text" name="uniqueid5" value="" /> と記入したところ、テキストボックスの中に「userId(変数)+’Qre3I’」が無事表示されました。 出来なかったこと <script> document.write("<p>" + uniqueid5 + "</p>"); </script> としたのですが、何も表示されません。 どこが間違っているのかご指摘いただけませんでしょうか?

みんなの回答

noname#207526
noname#207526
回答No.3

上手く表示されるかは、スコープの関係もあるのでソースをよく見る必要がありますね。 document.writeでテストするよりも、$(...).html などを試した方が一貫性があると思います。

回答No.2

varつけたらローカル変数として扱われるし、どんな順序で呼ばれるか検証していないけど コールバック関数で呼ばれているなら何らかの実行後に値が入ってくるんじゃないのかな。 単にhtml上に表示したいなら <p id="hoge"></p>という表示エリアを作っておいて valに表示するところで$('#hoge').html(uniqueid5 );がいいんじゃない?

tajix14
質問者

補足

有難うございます。どうしてもjavascript内で表示しなければならない事情なのです。 >コールバック関数で呼ばれているなら何らかの実行後に値が入ってくるんじゃないのかな。 有難うございます。もう少し弄ってみます。

回答No.1

全文見せてくれないとわからない。 変数のスコープの問題とかどう? それかdocument.writeをどこで実行しているか?

tajix14
質問者

補足

有難うございます。 ソースは下記のようなかたちです。 あるゲームでユーザーごとにユニークidを振るにあたり、ゲームへの参加数のsubmit回数 をユニーク値として保存、それに英数記号を振ったものをuniqueid5としています。 (バックにプロバイダから与えられた別のAPIがありますので、下記のかたちで 少なくともテキストボックスにはユニーク値を振ることが可能です) <head> <script> function UserInfo(){ //ユーザ認証 game.auth(authSuccessCallback, failureCallback); } //ユーザ認証の成功 function authSuccessCallback(data){ //ユーザID取得 var data = { Id: USER_ID }; game.getUserId(userSuccessCallback, failureCallback, data); } function userSuccessCallback(userId){ //submit回数をユニーク値として取得 var data = { score: unique, Id: USER_ID }; game.submitScore(submitIdSuccessCallback, failureCallback, data); //ユニークid作成 var uniqueid5 = unique+'Q!f0lwI'; //テキストボックス用 $('input[name~="uniqueid5"]').val(uniqueid5); } function submitIdSuccessCallback(){} </script> </head> <html> <input type="text" name="uniqueid5" value="" /> 上記は表示されます <script> document.write("<p>" + uniqueid5 + "</p>"); </script> 上記は表示されません </html> 試しに下記のようにしてところ、今度はdocument.writeのみが表示され、input type="text" の方は表示されませんでした。何かヒントになりますでしょうか? 宜しくお願い致します。 <script> var userId55 = '14775'; var uniqueid555 = userId55+'Q!f0lwI' $('input[name~="uniqueid555"]').val(uniqueid555); </script> <input type="text" name="uniqueid555" value="" /> <script> document.write("<p>" + uniqueid555 + "</p>"); </script>

関連するQ&A