【发布时间】:2013-01-06 17:39:06
【问题描述】:
这是我的第一篇文章,无论如何我会直截了当。
我有一个表单,当用户输入他们的姓名时,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 sn-p:
<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 后面,以专注于页面的其他区域。
感谢您的阅读和任何帮助。
【问题讨论】:
-
document.nameform.user.value这行得通吗?因为 name 属性已被弃用 w3.org/TR/xhtml1/#C_8 -
不确定 Carl,我的朋友告诉我这也是问题所在,但我正在尝试解决它。我不会撒谎,我真的不明白你给我的那个链接。我事先对表单做了一些研究,这是人们使用的代码,我一定翻出了一些非常古老的网页。
-
刚刚检查过了。尽管将来可能会被删除,但它适用于表单。不要尝试访问其他元素上的名称。但是,是的,代码应该运行。
-
快速提问。您知道当您将
ch_name添加到data[0]时,data[0]的值不会随着ch_name的变化而变化吗?它仅在设置时采用ch_name的值,即 null -
这就是它似乎在做的事情,是的,我完全忘记了我试图将变量 data[0] 的值更改为某个 html + 另一个变量。我正在尝试像 Xymotech 建议的那样刷新它,但现在我没有得到任何未定义或任何东西。
标签: javascript arrays forms variables undefined