gpt4 book ai didi

javascript - FireFox 中的 For 循环问题

转载 作者:行者123 更新时间:2023-11-30 23:48:26 25 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本使用 Prototype 和 LightView 删除表单元素中的默认值。这些脚本在 Safari 中运行良好,但在 FireFox (3.5.5) 中根本不起作用。

触发光 View 时会触发。

document.observe('lightview:opened', function() {
if($('contact_form')) {
var defaults = new Array();
var ins = $('contact_form').getElements();
var inlen = ins.length;
for(i=0; i < inlen; i++) {
alert(i)
if($(ins[i]).readAttribute('type') != 'image') {
defaults[ins[i].name] = $(ins[i]).value;
$(ins[i]).observe('focus', checkDefault.bind(event, ins[i]));

}

}

function checkDefault(name, event) {
alert(name.name)
if($(name).value == defaults[name.name]) {
alert(defaults[name.name])
$(name).value = '';
}
}
}
});

奇怪的是,当我检查 inlen 的长度时,会警告正确的数字,但是当我警告“i”时,只会警告第一个数字。我不明白为什么会发生这种情况。

你知道这里出了什么问题吗?

问题的地址如下: http://bearing.krd-design.net/

谢谢丰富

最佳答案

我不确定这是否会导致该问题,但您缺少 var:

for(var i=0; i < inlen; i++) {

此外,任何 alert() 后面都没有分号。

尝试纠正这些问题,看看是否会有所不同。

编辑:

正如 Matt 在评论中指出的:忽略 var 会在全局范围内创建变量。如果prototypejs也使用全局变量i,这可能会导致问题(但我真诚地怀疑)。

编辑2:

另一种可能性是通过输入名称访问数组:

defaults[ins[i].name] = $(ins[i]).value;

尝试将 defaults 声明为对象:

var defaults = {};

关于javascript - FireFox 中的 For 循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2185563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com