Javascript 使用2下拉列表向表中添加新行-如何更改选择列表的名称
如果有人能帮助我,我将不胜感激。两天来,我一直试图独自解决这个问题,但都没用 我正在为我在学校的项目写一份购物清单。我有一个包含表单的表(shopinglist) 在形式I have 2下拉列表lisst中,一个(产品)从我的数据库中获取值,第二个(数量)是常量numers。在这两个按钮旁边,我有两个按钮“添加”和“删除” 按add时,我想添加一个具有相同内容的新行 问题是我不能(或者可能不知道如何)根据行号更改select名称。我是说像 最后一件事-只有当用户从两个选择中选择,而不是仅从一个选择中选择时,才会添加行 下面是我的代码:javascript添加和删除函数:Javascript 使用2下拉列表向表中添加新行-如何更改选择列表的名称,javascript,xhtml,asp-classic,Javascript,Xhtml,Asp Classic,如果有人能帮助我,我将不胜感激。两天来,我一直试图独自解决这个问题,但都没用 我正在为我在学校的项目写一份购物清单。我有一个包含表单的表(shopinglist) 在形式I have 2下拉列表lisst中,一个(产品)从我的数据库中获取值,第二个(数量)是常量numers。在这两个按钮旁边,我有两个按钮“添加”和“删除” 按add时,我想添加一个具有相同内容的新行 问题是我不能(或者可能不知道如何)根据行号更改select名称。我是说像 最后一件事-只有当用户从两个选择中选择,而不是仅从一个选
function addRow(tableID) {
if (document.getElementById("product").value!="dafult" && document.getElementById("quantity").value!="zero")
{
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[0].cells.length;
var colCount = table.rows[0].cells.length;
for(var i=0; i<=colCount; i++) {
var newcell = row.insertCell(i);
newcell.innerHTML = table.rows[1].cells[i].innerHTML;
switch(newcell.childNodes[1].type) {
case "text":
newcell.childNodes[1].value = "";
break;
case "checkbox":
newcell.childNodes[1].checked = false;
break;
case "select-one":
newcell.childNodes[1].selectedIndex = 0;
break;
}
}
newcell.childNodes[1].visible = true;
table.rows[rowCount-1].cells[2].style.visibility="hidden" ;
}
else
{
if (document.getElementById("product").value!="dafult" && document.getElementById("quantity").value=="zero")
alert("please choose quantity") ;
if (document.getElementById("product").value=="dafult" && document.getElementById("quantity").value!="zero")
alert("please choose product") ;
if (document.getElementById("product").value=="dafult" && document.getElementById("quantity").value=="zero")
alert("please choose product and qantity") ;
}
}
function deleteRow(i){
if (document.getElementById("product").value!="dafult" && document.getElementById("quantity").value!="zero")
document.getElementById('shopinglist').deleteRow(i)
else
alert("you can't delete row before adding it");
}
函数addRow(tableID){
if(document.getElementById(“产品”).value!=“dafult”&&document.getElementById(“数量”).value!=“零”)
{
var table=document.getElementById(tableID);
var rowCount=table.rows.length;
var row=table.insertRow(rowCount);
var colCount=table.rows[0].cells.length;
var colCount=table.rows[0].cells.length;
for(var i=0;iIE将不允许您在将元素添加到页面后更改其名称。按照编写方式,您必须在设置innerHTML之前实际更改包含select的字符串
newcell.innerHTML = table.rows[1].cells[i].innerHTML.replace(/(\<select.+?name=".+?)"/, $1 + rowCount + i + "\"");
newcell.innerHTML=table.rows[1].cells[i].innerHTML.replace(/(\这里是一个可以开始的示例。它与您的示例完全不同,但更简单
我没有一个IE6,7,8来测试它,但它应该是类似的例子
还有一条注释,id必须是唯一的。您不应该在要复制的表的行上使用它们。您的句子还没有完成:“问题是我不能(或者可能不知道如何)根据行号更改选择名称。我的意思是像??”就像在第一次按下add按钮时,我希望它创建2个下拉列表,当第一次选择时,它将像no一样不工作..不,我根本无法添加一行…是jquery吗?您是否完全错过了“not TESTED…”之类的…?:)我是个无俱乐部的人…我真的开始相信我没有办法做到这一点..这种问题在web上任何地方都没有答案..是的,有…在设置innerHTML之前更改名称..很简单。尝试用javascript从头开始创建行内容,而不是使用table.rows[1].cells[i].InnerHtmlAlth虽然这更漂亮…但您不能更改“名称”在IETrue中元素的属性,有解决这个问题的方法。但它是从更干净和更简单的东西开始的。也许他有一些运气,可以在Firefox或Chrome上完成他的家庭作业。最初的问题说明了一切…这甚至没有解决它?是的,我在这里。rofl@ie9..2糟糕的是,至少有一个浏览器可以使用w抱歉;-)…她可能不会问?如果ie9是目标,因为她不会有问题…但是好男人!!干得好!!!!!
newcell.innerHTML = table.rows[1].cells[i].innerHTML.replace(/(\<select.+?name=".+?)"/, $1 + rowCount + i + "\"");