Javascript 如何删除行并在文本区域(标题除外)中显示删除的行?
我正在尝试创建一个网页,允许用户发送订单请求。我希望使用Javascript在文本区域中显示其顺序或更改的摘要 我曾尝试将其存储在数组中,但textarea值返回到Undefined。我在文本区域得到一个未定义的或[Object HTML] 将行添加到ID为的表中Javascript 如何删除行并在文本区域(标题除外)中显示删除的行?,javascript,dom,datatables,Javascript,Dom,Datatables,我正在尝试创建一个网页,允许用户发送订单请求。我希望使用Javascript在文本区域中显示其顺序或更改的摘要 我曾尝试将其存储在数组中,但textarea值返回到Undefined。我在文本区域得到一个未定义的或[Object HTML] 将行添加到ID为的表中 function addRow(tableID) { var table = document.getElementById(tableID); var rowCo
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[0].cells.length;
for(var i=0; i<colCount; i++) {
var newcell = row.insertCell(i);
row.id = rowCount;
newcell.innerHTML = table.rows[1].cells[i].innerHTML;
newcell.id= i+1;
//alert(newcell.childNodes);
switch(newcell.childNodes[0].type) {
case "text":
newcell.childNodes[0].value = "";
break;
case "checkbox":
newcell.childNodes[0].checked = false;
break;
case "select-one":
newcell.childNodes[0].selectedIndex = 0;
break;
}
}
}
// DELETE ROW and try to add to array and set value of textarea
function deleteRow(tableID) {
try {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var colCount = table.rows.cells.length;
var rowInfo = new Array();
for (var i = rowCount - 2; i > 0; i--) {
var row = table.rows[i];
var chkbox = row.cells[0].childNodes[0];
if(null != chkbox && true == chkbox.checked ) {
for(var m = 1;m<rowInfo.l;m++)
{
rowInfo.push(table.rows[i].cells[m]);
document.getElementById("myEmail").value = rowInfo[0];
}
if(rowCount >0){
table.deleteRow(i);
rowCount--;
}
}
}
}catch(e) {
alert("Please select Part you want to remove");
}
}
<table id="PartTable" class="table table-bordered table-responsive-sm table-striped text-center">
<thead>
<th class="text-center">Select</th>
<th class="text-center">Part Number</th>
<th class="text-center">Old Quantity</th>
<th class="text-center">New Quanity</th>
<td class="text-center">Price</td>
</thead><!-- END OF TABLE HEADERS-->
<!-- BEGINNING OF TABLE DATA-->
<tr id="firstrow">
<td id="selected" ><input class="form-check-input" type="checkbox" ></td>
<td id="0"contenteditable="true"><input type="text" class="form-control" name="partNumber"></td>
<td id="0"contenteditable="true"><input type="text" class="form-control" name="oldquanity"></td>
<td id="0" contenteditable="true"><input type="text" class="form-control" name="newquantity"></td>
<td id="0" contenteditable="true">$<input type="text" class="form-control" name="price"></td>
</tr>
</table>
<div>
<label for="myEmail">EMAIL</label>
<textarea id="myEmail" class="form-control" rows="3">
</textarea>
</div>
函数addRow(tableID){
var table=document.getElementById(tableID);
var rowCount=table.rows.length;
var row=table.insertRow(rowCount);
var colCount=table.rows[0].cells.length;
对于(变量i=0;i 0;i--){
var row=表.行[i];
var chkbox=行。单元格[0]。子节点[0];
if(null!=chkbox&&true==chkbox.checked){
对于(var m=1;m0){
表1.删除行(i);
行数--;
}
}
}
}捕获(e){
警报(“请选择要删除的部件”);
}
}
挑选
零件号
旧数量
新数量
价格
$
电子邮件
/*我想把数组放在文本区域,这样将来我就可以发送电子邮件了。我想我处理这个问题的方法不对。。若有其他方法来解决这个问题,那个就更好了。请帮助*/我制作了一个小示例来解释这个概念(非常简单),当然,您可以轻松地将其集成到代码中:
var srcData=[
{名称:'Mickey',颜色:'orange',武器:'nunchucks'},
{名字:'狮子座',颜色:'蓝色',武器:'剑'},
{名称:'Don',颜色:'purple',武器:'bo'},
{名称:'Raph',颜色:'red',武器:'sai'},
];
var dataTable=$('#mytable')。dataTable({
sDom:'t',
数据:srcData,
栏目:[
{title:'name',data:'name'},
{标题:'color',数据:'color'},
{
标题:"武器",,
资料:"武器",,
render:data=>data+'x'
},
]
});
$('#mytable')。在('click','button',function()上{
让rowClicked=dataTable.rows($(this.closest('tr'));
让msg=Object.values(rowClicked.data()[0]).toString();
$('#msg').val($('#msg').val()+msg+“\n”);
rowClicked.remove();
dataTable.draw();
})
td按钮{float:right}
text区域{宽度:100%}
我们使用jQuery更好吗?嗨,迈克,欢迎来到Stack Overflow!为了更好地提供建议,最好提供一个工作示例。这可以在这个页面上完成,也可以在另一个站点上完成,比如JSFiddle或CodePen。但是,乍一看,您可能希望尝试将数组转换为字符串。TextArea值只能显示字符串。如果您对如何编写Javascript非常自信,请使用jQuery。在使用库之前,先学习基础知识和中间技术。感谢您的帮助。但是,我在表中有用户输入。。表格是表格的一部分。。这仍然有效吗?您可以访问第三列中输入字段的值,例如:rowClicked.node().find('td:eq(2)input').val()
。我这里指的是我的例子,因为你可以马上试试。如果您准备了自己的JSFIDLE或codepen,我们可以从代码的角度进行讨论。否则,在没有必要的上下文的情况下讨论和解决问题就不那么容易了。