我一直在寻找一种方法,将我的HTML表单输入到我的javascript代码而不需要服务器,并在Stackoverflow上发现这篇文章: How to use HTML forms without a server
在那里,第一个答案包括以下链接到js.fiddle上的代码示例: http://jsfiddle.net/wG8K4/1/
function updateBackgroundColor(color) {
document.body.style.backgroundColor = color;
}
function displayFormContents(someForm) {
var out = '';
for (var i=0, el; el = someForm.elements[i]; i++) {
if (el.name) {
out += el.name + ' = ' + el.value + '\n';
}
}
alert(out);
}

<form>
<select name='gender' onchange='updateBackgroundColor(this.value);return false;'>
<option value=''>Select A Gender</option>
<option value='blue'>Male</option>
<option value='pink'>Female</option>
</select><br/>
type your nickname: <input type='text' name='nickname' /><br />
<input type='button' value='Display Form Contents' onclick='displayFormContents(this.form);return false;' />
</form>
&#13;
我已经在我自己的代码中试用了这种方法,但它确实有效。但是,我不明白这个停止标准是如何工作的
el = someForm.elements[i]
&#13;
当索引到达一个没有相应数组元素的值时,这会停止标准吗(数组因此可能会返回undefined / false之类的内容)?我想是的,因为我还可以观察到循环只迭代2次(索引0和1)。但是,我无法验证这个假设,这就是我想在这里问的原因。
答案 0 :(得分:0)
el = undefined
是undefined
,这是一个停止循环的 falsy 值。
这意味着只要i
大于或等于someForm.elements.length
(当someForm.elements[i]
为undefined
时),循环就会停止。