初めての投稿ですが、本題に入ります。
ユーザーが名前を書き込むと、Javascriptがその値をグローバル変数「ch_name」に保存するフォームがあります。サイトの任意の時点でアラートを介してこの変数にアクセスすると、入力した正しい値が常に表示されます。ただし、常に未定義として表示される変数を使用してユーザーを参照しようとすると、アラートに対してのみ機能します。
コードが正しくロードされなかった場合に備えて、コードを並べ替えてみましたが、結果も得られませんでした。私はまだJavaScriptにかなり慣れていないので、それを正しく参照したかどうか疑問に思い始めました。
おそらく私のコードが混乱していることに気付くでしょうが、ここに私が持っているものがあります.
var ch_name; //my global variable
var data = new Array(); //I've taken a snippet out of an array of 8.
data[0] = '<p>Question 1</p>' + ch_name + "\n" + //ch_name is referenced on this line.
'<button onclick="results1()">Click Me</button>' + "\n" +
'<button onclick="results2()">Click Me</button>' + "\n" +
'<button onclick="results3()">Click Me</button>';
function charName(form) { //This is the code that changes the global variable ch_name.
ch_name = document.nameform.user.value;
ranData = Math.floor(Math.random() * data.length);
document.getElementById("placeholder").innerHTML = data[ranData];
}
HTML スニペット:
<form NAME="nameform" method="GET">
<p>Enter your character name:</p> <input type="text" name="user" value="" />
<input type="button" value="Start" onClick="charName(this.form)"/>
</form>
<div id="placeholder"></div>
どこでもアラートを介してch_nameを参照すると、正しい結果が得られ、ページの読み込み時に空白になり、文字列を入力すると正しい名前が得られます。しかし、配列変数を介して参照するたびに、未定義が表示されます。これは完全なコードではありませんが、変数名などに競合がないことは確かです。何度かスキャンしましたが、私が馬鹿であることは確かです。
これに対する回避策はありますか?ch_name の背後にあるコード全体を完全に削除して、ページの他の領域に集中する準備ができています。
読んでくれてありがとう。