add another line 点击无反应
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>TK</title>
<style>
.dataTableHeadingRow{
border: 1px solid #E8E8E8;
border-collapse: collapse;
width: 5;
}
input[type=number]{
width: 40px;
}
</style>
</head>
<body>
<tr>
<td>
<table style="" bordercolor="#000000" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table style="width: 10px;" border="0" cellspacing="1" cellpadding="1">
<tbody>
<tr class="dataTableHeadingRow">
<th class="dataTableHeadingContent" align="left">QTY</th>
<th class="dataTableHeadingContent" align="left" width="60%"><span style="font-size: medium;">ITEM# OR DESCRIPTION</span></th>
<th class="dataTableHeadingContent" align="left" width="30%"><span style="font-size: medium;">NOTES</span></th>
</tr>
<tr class="dataTableRow">
<td class="QTY ROW" align="left"><input type="number"></td>
<td class="ITEM ROW" align="left" ><input type="text" list="product" input size="75" ></td>
<td class="NOTES ROW" align="center" width=""><input type="text" input size="40"></td>
</tr>
</tbody>
</table>
<div><input type="button" class="button" value="Add another line" onclick="addField();"></div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<script type="text/javascript">
function addField (argument) {
var dataTableRow = document.getElementsByClassName("dataTableRow");
var currentIndex = "dataTableRow".rows.length;
var currentRow = "dataTableRow".insertRow(-1);
var QTY = document.createElement("input");
QTY .setAttribute("name", "QTY " + currentIndex);
var ITEM = document.createElement("input");
ITEM .setAttribute("name", "ITEM " + currentIndex);
var NOTES = document.createElement("input");
NOTES .setAttribute("name", "NOTES " + currentIndex);
var addRowBox = document.createElement("input");
addRowBox.setAttribute("type", "button");
addRowBox.setAttribute("value", "Add another line");
addRowBox.setAttribute("onclick", "addField();");
addRowBox.setAttribute("class", "button");
var currentCell = currentRow.insertCell(-1);
currentCell.appendChild(QTY);
currentCell = currentRow.insertCell(-1);
currentCell.appendChild(ITEM);
currentCell = currentRow.insertCell(-1);
currentCell.appendChild(NOTES);
currentCell = currentRow.insertCell(-1);
currentCell.appendChild(addRowBox);
}
</script>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>TK</title>
<style>
.dataTableHeadingRow{
border: 1px solid #E8E8E8;
border-collapse: collapse;
width: 5;
}
input[type=number]{
width: 40px;
}
</style>
</head>
<body>
<tr>
<td>
<table style="" bordercolor="#000000" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table id="table" style="width: 10px;" border="0" cellspacing="1" cellpadding="1">
<tbody>
<tr class="dataTableHeadingRow">
<th class="dataTableHeadingContent" align="left">QTY</th>
<th class="dataTableHeadingContent" align="left" width="60%"><span style="font-size: medium;">ITEM# OR DESCRIPTION</span></th>
<th class="dataTableHeadingContent" align="left" width="30%"><span style="font-size: medium;">NOTES</span></th>
</tr>
<tr class="dataTableRow">
<td class="QTY ROW" align="left"><input type="number"></td>
<td class="ITEM ROW" align="left" ><input type="text" list="product" input size="75" ></td>
<td class="NOTES ROW" align="center" width=""><input type="text" input size="40"></td>
</tr>
</tbody>
</table>
<div><input type="button" class="button" value="Add another line" onclick="addField();"></div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<script type="text/javascript">
function addField (argument) {
var dataTableRow = document.getElementsByClassName("dataTableRow");
var currentIndex = dataTableRow.length;
var table = document.getElementById("table");
var currentRow = table.insertRow(-1);
currentRow.setAttribute("class","dataTableRow");
var QTY = document.createElement("input");
QTY .setAttribute("name", "QTY " + currentIndex);
QTY .setAttribute("type","number")
var ITEM = document.createElement("input");
ITEM .setAttribute("name", "ITEM " + currentIndex);
ITEM .setAttribute("size","75")
var NOTES = document.createElement("input");
NOTES .setAttribute("name", "NOTES " + currentIndex);
NOTES .setAttribute("size","40")
// var addRowBox = document.createElement("input");
// addRowBox.setAttribute("type", "button");
// addRowBox.setAttribute("value", "Add another line");
// addRowBox.setAttribute("onclick", "addField();");
// addRowBox.setAttribute("class", "button");
var currentCell = currentRow.insertCell(-1);
currentCell.appendChild(QTY);
currentCell = currentRow.insertCell(-1);
currentCell.appendChild(ITEM);
currentCell = currentRow.insertCell(-1);
currentCell.appendChild(NOTES);
// currentCell = currentRow.insertCell(-1);
// currentCell.appendChild(addRowBox);
}
</script>
</body>
</html>
直接拷贝以上代码即可,所有bug已经修复
主要问题点有:
1、var currentIndex = "dataTableRow".rows.length;
"dataTableRow" 字符串没有rows方法,dataTableRow这个是集合 可以直接dataTableRow.length获取长度
2、var currentRow = "dataTableRow".insertRow(-1);
和1一样 "dataTableRow" 字符串没有insertRow方法,并且dataTableRow这个document也没有insertRow方法,这个方法是table才有,所有我这里给table一个ID,然后用table去调用insertRow方法
var currentRow = table.insertRow(-1);
并且在下面补充了给新增的currentRow加上class,否则currentIndex获取到的长度永远是1
currentRow.setAttribute("class","dataTableRow");
3、这里给QTY、ITEM、NOTES补上了type、size等属性,保证每行样式统一
4、去掉了addRowBox的添加,如果需要,可以把注释的代码放开即可
如果能帮到你,望【采纳】,谢谢
有多处错误,你直接拷贝下面的代码执行!有帮助请采纳!
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>TK</title>
<style>
.dataTableHeadingRow{
border: 1px solid #E8E8E8;
border-collapse: collapse;
width: 5;
}
input[type=number]{
width: 40px;
}
</style>
</head>
<body>
<tr>
<td>
<table style="" bordercolor="#000000" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table id="dataTableRow" style="width: 10px;" border="0" cellspacing="1" cellpadding="1">
<tbody>
<tr class="dataTableHeadingRow">
<th class="dataTableHeadingContent" align="left">QTY</th>
<th class="dataTableHeadingContent" align="left" width="60%"><span style="font-size: medium;">ITEM# OR DESCRIPTION</span></th>
<th class="dataTableHeadingContent" align="left" width="30%"><span style="font-size: medium;">NOTES</span></th>
</tr>
<tr class="dataTableRow">
<td class="QTY ROW" align="left"><input type="number"></td>
<td class="ITEM ROW" align="left" ><input type="text" list="product" input size="75" ></td>
<td class="NOTES ROW" align="center" width=""><input type="text" input size="40"></td>
</tr>
</tbody>
</table>
<div><input type="button" class="button" value="Add another line" onclick="addField();"></div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<script type="text/javascript">
function addField (argument) {
var dataTableRow = document.getElementById("dataTableRow");
var currentIndex = dataTableRow.rows.length;
var currentRow = dataTableRow.insertRow(-1);
var QTY = document.createElement("input");
QTY .setAttribute("name", "QTY " + currentIndex);
var ITEM = document.createElement("input");
ITEM .setAttribute("name", "ITEM " + currentIndex);
var NOTES = document.createElement("input");
NOTES .setAttribute("name", "NOTES " + currentIndex);
var addRowBox = document.createElement("input");
addRowBox.setAttribute("type", "button");
addRowBox.setAttribute("value", "Add another line");
addRowBox.setAttribute("onclick", "addField();");
addRowBox.setAttribute("class", "button");
var currentCell = currentRow.insertCell(-1);
currentCell.appendChild(QTY);
currentCell = currentRow.insertCell(-1);
currentCell.appendChild(ITEM);
currentCell = currentRow.insertCell(-1);
currentCell.appendChild(NOTES);
currentCell = currentRow.insertCell(-1);
currentCell.appendChild(addRowBox);
}
</script>
</body>
</html>
你console.log打印一下获取长度的这个变量是不是没值,currentIndex。获取不到就是未定义。不清楚的话,每个变量都需要打印一下,这样就知道程序执行到哪里了