简体   繁体   English

无法使用Javascript中的“编辑”按钮

[英]Not working with Edit Button in Javascript

I'm Creating an Edit button that will edit my data in my row. 我正在创建一个“编辑”按钮,它将编辑我的行中的数据。 the problem is if I click multiple edit button it doesn't comply. 问题是,如果我单击多个编辑按钮,则不符合要求。 It only complies when I click 1 edit button. 仅当我单击1个编辑按钮时,它才合规。

HERE IS MY EXAMPLE : http://jsfiddle.net/te2wF/31/ 这是我的示例: http : //jsfiddle.net/te2wF/31/

HERES MY CODE 这里我的代码

function editRow(t)
{
        var i = t.parentNode.parentNode.rowIndex;
        var table = document.getElementById('myTable');

        if (  table.rows[i].cells[3].childNodes[0].value =="Edit")
        {
            var name = table.rows[i].cells[0].innerHTML;
            var age = table.rows[i].cells[1].innerHTML;
            var gender = table.rows[i].cells[2].innerHTML;
            var tname = table.rows[i].cells[0];
            var tage = table.rows[i].cells[1];
            var tgender = table.rows[i].cells[2];

            tname.innerHTML = "";
            var textname = document.createElement("input");
            textname.id = "textname";
            tname.appendChild(textname);

            tage.innerHTML = "";
            var textage = document.createElement("input");
            textage.id = "textage";
            tage.appendChild(textage);
            tgender.innerHTML = "";
            var textgender = document.createElement("select");
            textgender.id = "textgender";
            tgender.appendChild(textgender);

            document.getElementById('textname').focus();
            document.getElementById("uid").innerHTML = i;
            document.getElementById("textname").value = name;
            document.getElementById("textage").value = age;
             textgender.options.add(Option(gender));

            if(gender == "Male")    textgender.options.add(new Option("Female"));
            else                    textgender.options.add(new Option("Male"));


            table.rows[i].cells[3].childNodes[0].value="Save"
            document.getElementById("name").disabled = true;
            document.getElementById("age").disabled = true;
            document.getElementById("gender").disabled = true;
            document.getElementById("insert").disabled = true;
        }
        else
        {
            update(document.getElementById('uid').innerHTML);
            table.rows[i].cells[3].childNodes[0].value="Edit"
            document.getElementById("insert").disabled = false;

        }
    }

Thank you for helping..... 感谢您的帮助.....

you should change: textgender.options.add(Option(gender)); 您应该更改: textgender.options.add(Option(gender)); to textgender.options.add(new Option(gender)); textgender.options.add(new Option(gender));

But more to the point on the edit button: 但更重要的是编辑按钮:

You're attempting to access the editable inputs on your table by id - but when you create a second set of textname and textage inputs, the id's are the same as the other row that you're editing. 您正在尝试通过ID访问表上的可编辑输入-但是,当您创建第二组文本名和文本输入时,该ID与您要编辑的另一行相同。 You either need to create unique id's on these elements (perhaps by appending the row number to the id), or you need to set it up so that you can only edit one row at a time (disable and grey the other rows when you're editing one) 您可能需要在这些元素上创建唯一的ID(可能是通过在ID后面附加行号),或者需要对其进行设置,以便一次只能编辑一行(当您将另一行禁用并变灰时,重新编辑一个)

Please, when using jsfiddle, please keep javascript on javascript tab and html on html tab to make it easier and faster to help you. 请在使用jsfiddle时,请将JavaScript保留在javascript选项卡上,并将html保留在html选项卡上,以使其更加轻松快捷地为您提供帮助。

I believe you should adjust 2 places on your code: 我相信您应该在代码上调整2个位置:

First 第一

document.getElementById('textname').focus();
document.getElementById("uid").innerHTML = i;
document.getElementById("textname").value = name;
document.getElementById("textage").value = age;
textgender.options.add(Option(gender));

should be 应该

document.getElementById('textname').focus();
document.getElementById("uid").innerHTML = i;
document.getElementById("textname").value = name;
document.getElementById("textage").value = age;
textgender.options.add(new Option(gender));

Second: 第二:

        else
        {
            update(document.getElementById('uid').innerHTML);
            table.rows[i].cells[3].childNodes[0].value="Edit"
            document.getElementById("insert").disabled = false;

        }

should be: 应该:

        else
        {
            update(document.getElementById('uid').innerHTML);
            table.rows[i].cells[3].childNodes[0].value="Edit"
            document.getElementById("name").disabled = false;
            document.getElementById("age").disabled = false;
            document.getElementById("gender").disabled = false;                
            document.getElementById("insert").disabled = false;

        }

try here http://jsfiddle.net/te2wF/31/ 在这里尝试http://jsfiddle.net/te2wF/31/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM