作者:冰淇淋泡火锅_589 | 来源:互联网 | 2023-08-12 17:56
我有以下代码:
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 var newcell = row.insertCell(i);
newcell.style.property = 'value'
newcell.innerHTML = table.rows[0].cells[i].innerHTML;
//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;
}
}
}
function showUser(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+,Firefox,Chrome,Opera,Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6,IE5
xmlhttp = new activeXObject("microsoft.XMLHTTP");
}
xmlhttp.Onreadystatechange= function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","getcategory.php?q=" + str,true);
xmlhttp.send();
}
}
|
Select a topic... |
aaa |
code.php
script.js
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 var newcell = row.insertCell(i);
newcell.style.property='value'
newcell.innerHTML = table.rows[0].cells[i].innerHTML;
//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;
}
}
}
function showUser(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+,Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6,IE5
xmlhttp = new activeXObject("microsoft.XMLHTTP");
}
xmlhttp.Onreadystatechange= function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","getcategory.php?q="+str,true);
xmlhttp.send();
}
}
所以,事情是,每当我在表中添加另一行时,单击“添加另一个主题”按钮并在该行的下拉框中选择一个选项,而不是更改该行的数据,而是更改第一行。
在此示例中,我更改了第五行的保管箱菜单的选择,但是您将看到,它始终只会影响第一行。
有人可以帮我吗?
我认为您想这样做。
我无法测试Ajax,但请取消注释并尝试
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var newRow = table.rows[0].cloneNode(true);
newRow.querySelector(".txtHint").innerHTML="Select a topic";
[...newRow.querySelectorAll("input,select")].forEach(inp => {
switch (inp.type) {
case "text":
inp.value = "";
break;
case "checkbox":
inp.checked = false;
break;
case "select-one":
inp.id = "sel" + rowCount;
inp.selectedIndex = 0;
break;
}
})
table.appendChild(newRow);
}
function showUser(sel) {
var str = sel.value,id = sel.id,sel = document.getElementById(id);
if (str == "") {
var rowCount = table.rows.length;
sel.closest("tr").querySelector(".textHint").innerHTML = "";
return;
} else {
console.log(id,str)
/*
if (window.XMLHttpRequest) {
// code for IE7+,Firefox,Chrome,Opera,Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6,IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.Onreadystatechange= function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(id).closest("tr").querySelector(".textHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","getcategory.php?q=" + str,true);
xmlhttp.send();
*/
}
}
|
Select a topic... |
aaa |