2013-02-12 84 views
-1

我遇到了返回null的getElementById问题。我试图直接将ID,它工作正常。getElementById返回null

该功能由提交按钮调用,它检索上传文件的名称并将它们写入隐藏字段。

function onSubmitting() { 
    try { 
      var AU = $('#uploader').data('AU'); 
      var file_list = AU.files; 
      var i = 0; 
      while (i < 10) { 
       var tempName = "image" + i.toString(); 
       if (!(typeof file_list[i] === "undefined")) { 
        document.getElementById(tempName).value = "test"; 
       } 
       i++; 
      }      
     } 
     catch (err) { 
      alert(err.message); 
     } 
} 

相关的HTML是在这里:

<input type="hidden" name="image1" id="image1" /> 
<input type="hidden" name="image2" id="image2" /> 
<input type="hidden" name="image3" id="image3" /> 
<input type="hidden" name="image4" id="image4" /> 
<input type="hidden" name="image5" id="image5" /> 
<input type="hidden" name="image6" id="image6" /> 
<input type="hidden" name="image7" id="image7" /> 
<input type="hidden" name="image8" id="image8" /> 
<input type="hidden" name="image9" id="image9" /> 
<input type="hidden" name="image10" id="image10" /> 

感谢所有帮助

+0

而是给它们命名这样的,使用通用类。它会更干净。 – Zirak 2013-02-12 23:11:42

+0

[为什么jQuery或诸如\ getElementById \'的DOM方法找不到元素?](http://stackoverflow.com/questions/14028959/why-does-jquery-or-a-dom- method-such-as-getelementbyid-not-find-the-element) – 2013-02-13 00:03:42

回答

0

第一次循环的ID将image0中不存在在你的HTML。

+0

啊谢谢完全忽略了! – 2013-02-12 23:10:25

0

你的循环运行从0到9,但你的元素从1到10.更改

for (var i=0; i<10; i++) 

for (var i=1; i<=10; i++) 

命名或在循环体中使用(i+1)到处

0

正如Bergi和Justin所说的那样,你正在用i=0开始你的循环。我已经更新为使用i=1i <= 10,它按预期工作:)

参见:http://jsfiddle.net/sAKJd/

相关问题