这是我的第一篇文章,无论如何我会直奔主题。
我有一个表单,当用户输入他们的名字时,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 后面,以专注于页面的其他区域。
感谢您的阅读和任何帮助。