用appendChild增加新行时,document.getElementById(...)为空或不是对象问题 麻烦大家进来看看

qwe572572 2009-05-06 03:39:27
<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(...)为空或不是对象
...全文
818 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
2009-05-06
  • 打赏
  • 举报
回复
textx.name="bookID"+i;


你这里用的是name, 改成id

textx.id = "bookID" + i;
qwe572572 2009-05-06
  • 打赏
  • 举报
回复
你提示了我,我刚才把buttonx和textx的id属性都加上去了,终于运行正确了。可能函数里面的对象一定要加id属性....
你回答不是很正确,所以现在就结账吧。哈哈
qwe572572 2009-05-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shenzhenNBA 的回复:]
修改见红色部分
<input type="button" name="addbutton" id="addbutton" value="增加新行" onClick="addnewLine();"/>

document.getElementById(buttonname).focus();
说明:
方法 getElementById("对象ID") 是必须通过ID号获取对象的,你的按钮没有ID号当然不可以了,所以要加对象的ID号进去,呵呵...
[/Quote]


谢谢你的回答。
不过你说的不是很正确。我要通过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属性。
shenzhenNBA 2009-05-06
  • 打赏
  • 举报
回复
修改见红色部分
<input type="button" name="addbutton" id="addbutton" value="增加新行" onClick="addnewLine();"/>

document.getElementById(buttonname).focus();
说明:
方法 getElementById("对象ID") 是必须通过ID号获取对象的,你的按钮没有ID号当然不可以了,所以要加对象的ID号进去,呵呵...
qwe572572 2009-05-06
  • 打赏
  • 举报
回复
追加五十分
总共只有100分,没分可加了。
qwe572572 2009-05-06
  • 打赏
  • 举报
回复
没人回复,自己顶一下.........

87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧