<script type="text/javascript" defer=true> 
  
  var i=7; 
  function addnewLine(){ 
    var table=document.getElementById("tbody"); 
    var tr=document.createElement("tr"); 
    
    var tdx=document.createElement("td");
     tdx.nowrap="nowrap"; 
    var tdy=document.createElement("td");
tdy.id="book"+i; 
tdy.nowrap="nowrap";
var tdz=document.createElement("td");
tdz.nowrap="nowrap";    var textx=document.createElement("input"); 
    textx.name="bookID"+i; 
textx.onblur=function()
     {
  checkB(this.value);
 }

    var buttonx=document.createElement("input");
buttonx.type="button"; 
    buttonx.name="Submit2"+i; 
buttonx.value="...";
buttonx.onclick=function()
      {    window.open('bookSel.jsp?x='+this.name.substring(this.name.length-1));
 
 var x=this.name.substring(this.name.length-1);
 var buttonname='bookID'+x;
 document.getElementById(buttonname).focus();   //系统提示错误在这行
  } var buttonz=document.createElement("input");
buttonz.type="button";
buttonz.onclick=function()
         {
   if(confirm('确定要删除吗?')) {deleteCurrentRow(this); }
   else {}
 }
    
buttonz.value="删除";

        //将文本框对象添加到td 
    tdx.appendChild(textx); 
    tdx.appendChild(buttonx); 
    tdz.appendChild(buttonz);         //将td对象添加到tr 
    tr.appendChild(tdx); 
    tr.appendChild(tdy); 
    tr.appendChild(tdz);
        //将tr对象添加到tbody 
    table.appendChild(tr); 
i++; 
    document.getElementById("count").value=i;  

  }   </script>
另外有按钮: <input type="button" name="addbutton" value="增加新行" onClick="addnewLine();"/>我点“增加新行”增加几行后,一点击每行中的“...”按钮就会报错:document.getElementById(...)为空或不是对象

解决方案 »

  1.   

    修改见红色部分
    <input type="button" name="addbutton" id="addbutton" value="增加新行" onClick="addnewLine();"/> document.getElementById(buttonname).focus();  
    说明:
    方法 getElementById("对象ID") 是必须通过ID号获取对象的,你的按钮没有ID号当然不可以了,所以要加对象的ID号进去,呵呵...
      

  2.   

    谢谢你的回答。
    不过你说的不是很正确。我要通过getElementById()获取的不是“增加新行”按钮,而是
    var buttonx=document.createElement("input"); 
    buttonx.type="button"; 
        buttonx.name="Submit2"+i; 
    buttonx.value="..."; 
    buttonx.onclick=function() 
          {   window.open('bookSel.jsp?x='+this.name.substring(this.name.length-1)); var x=this.name.substring(this.name.length-1); 
    var buttonname='bookID'+x; 
    document.getElementById(buttonname).focus();  //系统提示错误在这行 
      } 
    这个名字为'bookID'+x,值为“...”的按钮;
    另外我用其他地方用这个方法时,对象可以只有name属性。
      

  3.   

    你提示了我,我刚才把buttonx和textx的id属性都加上去了,终于运行正确了。可能函数里面的对象一定要加id属性....
    你回答不是很正确,所以现在就结账吧。哈哈
      

  4.   

    textx.name="bookID"+i; 
    你这里用的是name, 改成idtextx.id = "bookID" + i;