Javascript 如何设置按钮处理程序以删除父表行?
我有一个HTML和jQuery项目,目前所有的工作都非常适合我希望他们做的事情。我现在需要添加一个链接到此行的删除/删除按钮:Javascript 如何设置按钮处理程序以删除父表行?,javascript,jquery,html,Javascript,Jquery,Html,我有一个HTML和jQuery项目,目前所有的工作都非常适合我希望他们做的事情。我现在需要添加一个链接到此行的删除/删除按钮: '<button class="removeThis" onclick="removeThis(' + tr.length + ')">Delete</button >' + 但当然,它没有做我需要它做的事情 有人能帮我解决这个问题吗 提前谢谢 $document.readyfunction{ $'.buttons'。在“单击”“按钮.隐藏”
'<button class="removeThis" onclick="removeThis(' + tr.length + ')">Delete</button >' +
但当然,它没有做我需要它做的事情
有人能帮我解决这个问题吗
提前谢谢
$document.readyfunction{
$'.buttons'。在“单击”“按钮.隐藏”功能上{
console.log'hide';
$'form'。隐藏;
};
$'.buttons'。在“单击”“按钮.添加”功能上{
console.log'add';
var edit=$'edit';
editRow=$'editRow';
编辑.show;
如果!$'addNew'。长度{
编辑.append;
}
如果编辑行{
editRow.remove;
}
对于变量x=1;x<$“输入”。长度;x++{
$'btd'+x.val;
}
};
$“显示”。单击函数{
//$'form'。show;
//美元'btd1'。val'Vlad';
//$‘btd2’。val‘Andrei’;
//$'btd3'.val'vTask';
//$‘btd4’。val‘Ceva’;
//$‘btd5’。val‘Alceva’;
};
};
函数edita{
var edit=$'edit';
addNew=$'addNew';
editRow=$'editRow';
编辑.show;
如果添加新的{
addNew.remove;
}
如果editRow.length{
editRow.replacetwith;
}否则{
编辑.append;
}
$.each$'.tr-'+a.find'td',函数键,val{
$'formedit input[type=text]'.eqkey.val$val.text;
};
}
函数savea{
var tr=$'tr';
有效=真;
消息=;
$'formedit input'。每个函数{
var$this=$this;
如果!$this.val{
var inputName=$this.attr'name';
有效=错误;
消息+='请完成所有列'+inputName+'\n';
}
};
如果!有效{
警报信息;
}否则{
对于var q=1;q<$'.tr-'+a+'td'.长度;q++{
$'.tr-'+a+'td:nth child'+q+.html$'btd'+q.val;
}
对于变量x=1;x<$“输入”。长度;x++{
$'btd'+x.val;
}
$'editRow'。删除;
}
}
函数addNewTr{
var tr=$'tr';
有效=真;
消息=;
$'formedit input'。每个函数{
var$this=$this;
如果!$this.val{
var inputName=$this.attr'name';
有效=错误;
消息+='请输入您的'+inputName+'\n';
}
};
如果!有效{
警报信息;
}否则{
$'table tbody'。追加+
+
+$'btd1'.val++
+$'btd2'.val++
+$'btd3'.val++
+$'btd4'.val++
+$'btd5'.val++
+
“删除”+
“编辑”+
+
+
;
对于变量x=1;x<$“输入”。长度;x++{
$'btd'+x.val;
}
}
}
功能移除{
$'tr-'+'a'。删除;
}
vTask
[vTask]
名称
次要名称
电子邮件
电话
暗语
添加
隐藏
下面的示例函数生成一个字符串“tr-”+“a”,它将始终只查找tr-a: 只需删除“a”左右的引号:
下面的示例函数生成一个字符串“tr-”+“a”,它将始终只查找tr-a: 只需删除“a”左右的引号:
我想你只需要删除“a”中的引号:
function removeThis(a) {
$('.tr-' + a).remove();
}
编辑:这段代码完全有效!我确实需要在“tr”之前加一个点,因为它是一个类
$document.readyfunction{
$'.buttons'。在“单击”“按钮.隐藏”功能上{
console.log'hide';
$'form'。隐藏;
};
$'.buttons'。在“单击”“按钮.添加”功能上{
console.log'add';
var edit=$'edit';
editRow=$'editRow';
编辑.show;
如果!$'addNew'。长度{
编辑.append;
}
如果编辑行{
editRow.remove;
}
对于变量x=1;x<$“输入”。长度;x++{
$'btd'+x.val;
}
};
$“显示”。单击函数{
//$'form'。show;
//美元'btd1'。val'Vlad';
//$‘btd2’。val‘Andrei’;
//$'btd3'.val'vTask';
//$‘btd4’。val‘Ceva’;
//$‘btd5’。val‘Alceva’;
};
};
函数edita{
var edit=$'edit';
addNew=$'addNew';
editRow=$'editRow';
编辑.show;
如果添加新的{
addNew.remove;
}
如果editRow.length{
editRow.replacetwith;
}否则{
编辑.append;
}
$.each$'.tr-'+a.find'td',函数键,val{
$'formedit input[type=text]'.eqkey.val$val.text;
};
}
函数savea{
var tr=$'tr';
有效=真;
消息=;
$'formedit input'。每个函数{
var$this=$this;
如果!$this.val{
var inputName=$this.attr'name';
有效=错误;
消息+='请完成所有列'+inputName+'\n';
}
};
如果!有效{
警报信息;
}否则{
对于var q=1;q<$'.tr-'+a+'td'.长度;q++{
$'.tr-'+a+'td:nth child'+q+.html$'btd'+q.val;
}
对于var x=1;x<$‘输入’。长度;x++{
$'btd'+x.val;
}
$'editRow'。删除;
}
}
函数addNewTr{
var tr=$'tr';
有效=真;
消息=;
$'formedit input'。每个函数{
var$this=$this;
如果!$this.val{
var inputName=$this.attr'name';
有效=错误;
消息+='请输入您的'+inputName+'\n';
}
};
如果!有效{
警报信息;
}否则{
$'table tbody'。追加+
+
+$'btd1'.val++
+$'btd2'.val++
+$'btd3'.val++
+$'btd4'.val++
+$'btd5'.val++
+
“删除”+
“编辑”+
+
+
;
对于变量x=1;x<$“输入”。长度;x++{
$'btd'+x.val;
}
}
}
功能移除{
警报“.tr-”+a;
$'.tr-'+a.remove;
}
vTask
[vTask]
名称
次要名称
电子邮件
电话
暗语
添加
隐藏
删去
我想你只需要删除“a”中的引号:
function removeThis(a) {
$('.tr-' + a).remove();
}
编辑:这段代码完全有效!我确实需要在“tr”之前加一个点,因为它是一个类
$document.readyfunction{
$'.buttons'。在“单击”“按钮.隐藏”功能上{
console.log'hide';
$'form'。隐藏;
};
$'.buttons'。在“单击”“按钮.添加”功能上{
console.log'add';
var edit=$'edit';
editRow=$'editRow';
编辑.show;
如果!$'addNew'。长度{
编辑.append;
}
如果编辑行{
editRow.remove;
}
对于变量x=1;x<$“输入”。长度;x++{
$'btd'+x.val;
}
};
$“显示”。单击函数{
//$'form'。show;
//美元'btd1'。val'Vlad';
//$‘btd2’。val‘Andrei’;
//$'btd3'.val'vTask';
//$‘btd4’。val‘Ceva’;
//$‘btd5’。val‘Alceva’;
};
};
函数edita{
var edit=$'edit';
addNew=$'addNew';
editRow=$'editRow';
编辑.show;
如果添加新的{
addNew.remove;
}
如果editRow.length{
editRow.replacetwith;
}否则{
编辑.append;
}
$.each$'.tr-'+a.find'td',函数键,val{
$'formedit input[type=text]'.eqkey.val$val.text;
};
}
函数savea{
var tr=$'tr';
有效=真;
消息=;
$'formedit input'。每个函数{
var$this=$this;
如果!$this.val{
var inputName=$this.attr'name';
有效=错误;
消息+='请完成所有列'+inputName+'\n';
}
};
如果!有效{
警报信息;
}否则{
对于var q=1;q<$'.tr-'+a+'td'.长度;q++{
$'.tr-'+a+'td:nth child'+q+.html$'btd'+q.val;
}
对于变量x=1;x<$“输入”。长度;x++{
$'btd'+x.val;
}
$'editRow'。删除;
}
}
函数addNewTr{
var tr=$'tr';
有效=真;
消息=;
$'formedit input'。每个函数{
var$this=$this;
如果!$this.val{
var inputName=$this.attr'name';
有效=错误;
消息+='请输入您的'+inputName+'\n';
}
};
如果!有效{
警报信息;
}否则{
$'table tbody'。追加+
+
+$'btd1'.val++
+$'btd2'.val++
+$'btd3'.val++
+$'btd4'.val++
+$'btd5'.val++
+
“删除”+
“编辑”+
+
+
;
对于变量x=1;x<$“输入”。长度;x++{
$'btd'+x.val;
}
}
}
功能移除{
警报“.tr-”+a;
$'.tr-'+a.remove;
}
vTask
[vTask]
名称
次要名称
电子邮件
电话
暗语
添加
隐藏
删去
您完全可以在没有jQuery的情况下实现这一点,我强烈建议您这样做
function removeThis(e){
const parentTd = e.parentNode;
const parentTr = parentTd.parentNode;
const parentTable = parentTr.parentNode;
return parentTable.removeChild(parentTr);
}
在你的按钮上你做到了
<button onClick='removeThis(this)'>Delete me</button>
通过这种方式,您可以创建一个可测试且可重用的函数,用于删除所有DOM元素
哦,顺便说一句,这种方式可以从内到外工作,而不是在整个文档中查询要删除的元素。完全不需要jQuery就可以实现这一点,我强烈建议这样做
function removeThis(e){
const parentTd = e.parentNode;
const parentTr = parentTd.parentNode;
const parentTable = parentTr.parentNode;
return parentTable.removeChild(parentTr);
}
在你的按钮上你做到了
<button onClick='removeThis(this)'>Delete me</button>
通过这种方式,您可以创建一个可测试且可重用的函数,用于删除所有DOM元素
哦,顺便说一句,这样做是从内到外的,而不是在整个文档中查询要删除的元素。删除字母“a”周围的引号,以便使用其中的变量:
function removeThis(a) {
$('.tr-' + a).remove();
}
您还应该考虑使用不同的方法来对表行进行编号。如果删除,行号将开始被重用 删除行,然后添加新行:
Row 0, Row 1, Row 2, Row 3, Row 4
Add row. There are 5 rows, so the new row is row 5.
Row 0, Row 1, Row 2, Row 3, Row 4, Row 5
Remove row 1.
Row 0, Row 2, Row 3, Row 4, Row 5
Add row. There are 5 (!!!) rows, so the new row is (also!!!) row 5.
Row 0, Row 2, Row 3, Row 4, Row 5, Row 5
在每次添加行时,不要为TR获得新的值,而是考虑每次添加行时递增的全局变量:
var rowCounter = 0;
function addNewTr() {
//snip
rowCounter++;
$('table tbody').append('' +
'<tr class="tr-' + rowCounter + '">' +
//snip
}
删除字母“a”周围的引号,以便可以在此处使用变量:
function removeThis(a) {
$('.tr-' + a).remove();
}
您还应该考虑使用不同的方法来对表行进行编号。如果删除行,然后添加新行,行号将开始重新使用:
Row 0, Row 1, Row 2, Row 3, Row 4
Add row. There are 5 rows, so the new row is row 5.
Row 0, Row 1, Row 2, Row 3, Row 4, Row 5
Remove row 1.
Row 0, Row 2, Row 3, Row 4, Row 5
Add row. There are 5 (!!!) rows, so the new row is (also!!!) row 5.
Row 0, Row 2, Row 3, Row 4, Row 5, Row 5
在每次添加行时,不要为TR获得新的值,而是考虑每次添加行时递增的全局变量:
var rowCounter = 0;
function addNewTr() {
//snip
rowCounter++;
$('table tbody').append('' +
'<tr class="tr-' + rowCounter + '">' +
//snip
}
你是说这个吗?:“tr-”+aDid你是说这个吗?:“tr-”+aStill不工作也试过了。忘了说对不起,太棒了,工作很完美,直到不工作也试过了。忘了提抱歉太好了,工作很完美只做了我的删除按钮dissapear@Andrei224231哎呀,我忘了你需要删除TR。你需要创建该TR的DOM实例并将其传递给removeThis。如果我知道怎么做的话:。我一周前刚开始学习javascriptYou可以按原样从这个示例中提取按钮代码,并执行如下操作:var parentTr=e.parentNode;返回parentTr.parentNode.removeChildparentTr@Andrei224231由于David Millar的回复,我更新了我的答案。只做了我的删除按钮dissapear@Andrei224231哎呀,我忘了你需要删除TR。你需要创建该TR的DOM实例并将其传递给removeThis。如果我知道怎么做的话:。我一周前刚开始学习javascriptYou可以按原样从这个示例中提取按钮代码,并执行如下操作:var parentTr=e.parentNode;返回parentTr.parentNode.removeChildparentTr@Andrei224231感谢David Millar的回复,我更新了我的答案。该功能删除了不工作的提示。我尝试了alsoSorry@Andrei224231,开始时还缺少一个句点,表示您正在搜索一个类。函数removeThisa不起作用。我尝试了alsoSorry@Andrei224231在开始时还缺少一个句点来表示您正在搜索一个类。如果您需要这种方法,您必须这样做:function removeThisa{$'。greenTable tr:eq'+a+.remove;}如果您需要这种方法,您必须这样做:function removeThisa{$'.greenTable tr:eq'+a+.remove;}