TypeError:mytitle为null

时间:2014-04-10 07:20:31

标签: javascript

我使用javascript填写表单中的一些内容,但是当我使用变量来获取对象时,会发布错误"TypeError: mytitle is null"

这是我的代码:

var num=0;
  function add(){
   var tr1=document.getElementById('itable').insertRow(1);
   var c0=tr1.insertCell(0);
   var c1=tr1.insertCell(1);
   var c2=tr1.insertCell(2);
   var c3=tr1.insertCell(3);
   var c4=tr1.insertCell(4);
   c0.innerHTML="<input type='checkbox' name='ck'/>";
   c1.innerHTML="<input type='text' style='width:150px;'id='news_title"+ num + "' name='news_title"+num+ "' value="+ document.getElementById('news_title').value+"></input>";
   c1.className="titlelimit";
   $(".titlelimit").wordLimit(10);
   c2.innerHTML="<input type='text' style='width:200px;' id='news_content"+num+"' name='news_content"+num+"' value="+ document.getElementById('news_content').value+"></input>";
   c2.className="detailindex";
   $(".detailindex").wordLimit(50);
   c3.innerHTML="<input type='text' readonly='readonly 'maxlength='4' style='width:70px;' id='news_type"+num+"' name='news_type"+num+"' value="+ document.getElementById('news_type').value+"></input>";
   c4.innerHTML="<input type='button' value='删除' onclick='del(this)' />";  
   num=num+1;
   $("#news_title").attr("value","");
   $("#news_content").attr("value","");
   $("#news_type").attr("value","");
  }

  window.onload = loadtable; 
  function loadtable() {
    var newstitle =  myform.mynewstitle.value
    alert(newstitle) 
    var titlearray = newstitle.split(",");
    for(i = 0;i<titlearray.length;i++){
        alert(titlearray[i]);
        add();
        var mytitle = document.getElementById('news_title'+num);
        mytitle.value = titlearray[i];
        num = num +1;   

   }
  } 

3 个答案:

答案 0 :(得分:1)

您正在使用num - 'news_title"+ num

创建元素

然后使用num=num+1;

递增该值

然后尝试找到'news_title'+num

的元素

如果你创建了一个元素'news_title0',那么当你查找它时,你正在寻找一个标识为'news_title1'的元素

num=num+1;函数中删除add,因为它已在loadtable函数的循环中正确存在。

答案 1 :(得分:1)

num具有全局范围,因此在add()结束时,它的值为1

当您处于for循环时,您使用错误的num来创建您的ID名称。

你必须使用i。

var mytitle = document.getElementById('news_title'+i);

并且这条指令是无用的,删除最后一个cicle:

num = num +1; 

这样:

function loadtable() {
    var newstitle =  myform.mynewstitle.value
    alert(newstitle) 
    var titlearray = newstitle.split(",");
    for(i = 0;i<titlearray.length;i++){
        alert(titlearray[i]);
        add();
        var mytitle = document.getElementById('news_title'+i);
        mytitle.value = titlearray[i];
   }

答案 2 :(得分:0)

错误在以下行中,

var mytitle = document.getElementById('news_title'+num);

mytitle找不到任何元素,您可能想查看'news_title'+num返回的内容。