Javascript创建了太多输入元素

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); 
     } 
    } 
} 
+0

没有你的HTML复制结果到一个正常的数组,我们不能告诉。页面上可能已经有8个了。 – 2012-01-03 18:30:18

+0

用输入显示周围的html。 – Slavic 2012-01-03 18:30:46

+0

请显示html – 2012-01-03 18:31:13

getElementsByTagName返回结果的实时视图。

当您在当前之前插入新的<input>时,电流会被切换,因此inputs[i + 1]现在指向相同的<input type="file">

你需要通过编写

inputs = Array.prototype.slice.call(inputs); 
+0

就是这样。谢谢。 – 2012-01-03 18:57:13