Javascript 使用2下拉列表向表中添加新行-如何更改选择列表的名称

Javascript 使用2下拉列表向表中添加新行-如何更改选择列表的名称,javascript,xhtml,asp-classic,Javascript,Xhtml,Asp Classic,如果有人能帮助我,我将不胜感激。两天来,我一直试图独自解决这个问题,但都没用 我正在为我在学校的项目写一份购物清单。我有一个包含表单的表(shopinglist) 在形式I have 2下拉列表lisst中,一个(产品)从我的数据库中获取值,第二个(数量)是常量numers。在这两个按钮旁边,我有两个按钮“添加”和“删除” 按add时,我想添加一个具有相同内容的新行 问题是我不能(或者可能不知道如何)根据行号更改select名称。我是说像 最后一件事-只有当用户从两个选择中选择,而不是仅从一个选

如果有人能帮助我,我将不胜感激。两天来,我一直试图独自解决这个问题,但都没用

我正在为我在学校的项目写一份购物清单。我有一个包含表单的表(shopinglist)

在形式I have 2下拉列表lisst中,一个(产品)从我的数据库中获取值,第二个(数量)是常量numers。在这两个按钮旁边,我有两个按钮“添加”和“删除”

按add时,我想添加一个具有相同内容的新行

问题是我不能(或者可能不知道如何)根据行号更改select名称。我是说像 最后一件事-只有当用户从两个选择中选择,而不是仅从一个选择中选择时,才会添加行

下面是我的代码:javascript添加和删除函数:

 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 + "\"");