Javascript 未捕获的TypeError:无法设置属性
我很困惑到底为什么它会返回一个错误 未捕获的TypeError:无法将属性“outerHTML”设置为nullJavascript 未捕获的TypeError:无法设置属性,javascript,Javascript,我很困惑到底为什么它会返回一个错误 未捕获的TypeError:无法将属性“outerHTML”设置为null 在delete_行(table_script.js:10) 在HTMLInputElement.onclick(table.html:1)` 有人能帮我确定如何修复错误吗 我的代码: var-temp\u图像; var temp_标题; 变量温度描述; 函数删除_行(否){ 如果(确认(“您确定要删除吗?”)){ document.getElementById(“行”+no+”).o
在delete_行(table_script.js:10)
在HTMLInputElement.onclick(table.html:1)` 有人能帮我确定如何修复错误吗 我的代码:
var-temp\u图像;
var temp_标题;
变量温度描述;
函数删除_行(否){
如果(确认(“您确定要删除吗?”)){
document.getElementById(“行”+no+”).outerHTML=“”;
}否则
警报(“数据未删除”);
}
函数add(){
var new_image=document.getElementById(“new_image”).value;
var new_title=document.getElementById(“new_title”).value;
var new_description=document.getElementById(“new_description”).value;
if(临时图像和临时描述和临时标题!=null){
警报(“你好世界”);
}else if(新图片和新标题和新描述!=“”){
var table=document.getElementById(“数据表”);
var table_len=(table.rows.length)-1;
变量行=table.insertRow(table_len).outerHTML=
“”+新标题+
“+新描述+”;
document.getElementById(“新图像”).value=“”;
document.getElementById(“新标题”).value=“”;
document.getElementById(“新描述”).value=“”;
}
}
图像链接
标题
描述
当您使用onclick='delete_row(this);'时,会出现一个错误代码>传递对象此
,而不是行号
相反,您可以尝试这样的方法,在哪里找到tr
并删除它,例如
function delete_row(el)
{
if (confirm("Are you sure you want to delete?")) {
el.closest('tr').remove();
} else
alert("Data is not deleted");
}
如果要保留现有的删除功能,请将onlick
更改为此
onclick='delete_row(" + table_len + ");'
我仍然推荐第一个建议,因为使用.outerHTML
删除元素的可读性不是很强
或者您可以这样做,使用onclick='delete_row(“+table_len+”)代码>
function delete_row(no)
{
if (confirm("Are you sure you want to delete?")) {
document.getElementById("row" + no).parentNode.remove();
} else
alert("Data is not deleted");
}
更新,删除我的第二个建议
多亏了,使用现有解决方案可能会引起回击,原因是您正在使用(table.rows.length)-1
获取id
它可能造成的问题是,您最终得到两行具有相同的id
当您使用onclick='delete_row(this);'时,会出现一个错误代码>传递对象此
,而不是行号
相反,您可以尝试这样的方法,在哪里找到tr
并删除它,例如
function delete_row(el)
{
if (confirm("Are you sure you want to delete?")) {
el.closest('tr').remove();
} else
alert("Data is not deleted");
}
如果要保留现有的删除功能,请将onlick
更改为此
onclick='delete_row(" + table_len + ");'
我仍然推荐第一个建议,因为使用.outerHTML
删除元素的可读性不是很强
或者您可以这样做,使用onclick='delete_row(“+table_len+”)代码>
function delete_row(no)
{
if (confirm("Are you sure you want to delete?")) {
document.getElementById("row" + no).parentNode.remove();
} else
alert("Data is not deleted");
}
更新,删除我的第二个建议
多亏了,使用现有解决方案可能会引起回击,原因是您正在使用(table.rows.length)-1
获取id
它可能造成的问题是,您最终有两行具有相同的id
请改进您的代码并提供运行的fiddle请改进您的代码并提供运行的fiddle HTML元素中是否存在最近的fiddle?或者您指的是jQuery的closestas,因为我将代码更改为onclick='delete_行(“+table_len+”),这)
它只会删除imgtag@Rajesh否,到javascriptclosest()
@hazy好吧,你不能改变它然后使用我更新的函数。保持你的onclick
原样onclick='delete_行(“+table_len+”)代码>第二个建议可能会导致问题。就像有人在添加两行一样,表将具有idrow1
和row2
。然后删除第一行。所以只剩下一行idrow2
,现在再次添加新行,然后它将添加idrow2
。因此将有两个元素具有相同的idrow2
<代码>文档。getElementById
选择器将始终选择第一个行2
元素并将其删除。HTML元素中是否存在最接近的元素?或者您指的是jQuery的closestas,因为我将代码更改为onclick='delete_行(“+table_len+”),这)
它只会删除imgtag@Rajesh否,到javascriptclosest()
@hazy好吧,你不能改变它然后使用我更新的函数。保持你的onclick
原样onclick='delete_行(“+table_len+”)代码>第二个建议可能会导致问题。就像有人在添加两行一样,表将具有idrow1
和row2
。然后删除第一行。所以只剩下一行idrow2
,现在再次添加新行,然后它将添加idrow2
。因此将有两个元素具有相同的idrow2
<代码>文档。getElementById
选择器将始终选择第一个行2
元素并将其删除。