Javascript创建了太多输入元素
问题描述:
无法完全弄清楚这一点。在Firefox中(仅在Firefox中测试),此代码创建8个输入和8个按钮。我认为它应该只创建一个。需要一些帮助在这一个。Javascript创建了太多输入元素
var replacefiles = function(){
var inputs = document.getElementsByTagName('input');
var length = inputs.length // prevent infinite loop
for (var x = 0; x < length; x++){
var type = inputs[x].getAttribute('type');
if (type === 'file'){
var file = inputs[x];
var parent = file.parentNode;
var input = document.createElement('input');
var button = document.createElement('button');
parent.insertBefore(input, file);
parent.insertBefore(button, file);
}
}
}
答
getElementsByTagName
返回结果的实时视图。
当您在当前之前插入新的<input>
时,电流会被切换,因此inputs[i + 1]
现在指向相同的<input type="file">
。
你需要通过编写
inputs = Array.prototype.slice.call(inputs);
+0
就是这样。谢谢。 – 2012-01-03 18:57:13
没有你的HTML复制结果到一个正常的数组,我们不能告诉。页面上可能已经有8个了。 – 2012-01-03 18:30:18
用输入显示周围的html。 – Slavic 2012-01-03 18:30:46
请显示html – 2012-01-03 18:31:13