繁体   English   中英

如何使用 HTML 和 Javascript 编辑动态表格中的下拉列表

[英]How to edit a drop-down list in a dynamic table using HTML and Javascript

我有这个动态表。 添加一行后,会添加两个附加按钮: editdelete 第二列是下拉列表。 此项目中的edit功能有点棘手。 我想以之前选择的项目(保存的项目)作为默认启用列表。

例如,如果保存的行的 level= A ,那么当单击edit时,下拉列表应该被激活,其中级别为A 但是用户应该能够单击下拉列表并选择BC

我评论了导致问题的部分。 当我取消注释它时, Add函数不起作用,我收到这个错误: Uncaught SyntaxError: Unexpected identifier in the line that starts with: level.innerHTML="<select id="levels-list"> for level.innerHTML="<select id="levels-list"> the list in the edit_row函数。

HTML:

<html>
<head>

</head>
<body>
<div id="wrapper">
<table align='center' cellspacing=2 cellpadding=5 id="data_table" border=1>
<tr>
<th>Name</th>
<th>Level</th>
<th>Action</th>
</tr>

<tr>
<td><input type="text" id="new_name"></td>
<td>
    <select name="levels-list" id="levels-list">
    <option value="A" id="option-1">A</option>
    <option value="B" id="option-2">B</option>
    <option value="C" id="option-3">C</option>
    </select> 
</td>
<td><input type="button" class="add" value="Add Row" id="add-button"></td>
</tr>

</table>
</div>
<script type="text/javascript" src="get-text.js"></script>
</body>
</html>

剧本:

var myArray = [{"name":"aaa","level":"A"},{"name":"bbb","level":"B"},{"name":"ccc","level":"C"}];
var addButton=document.getElementById("add-button"); 

//listen to add button. If clicked, store the entered data and append them in the display
addButton.addEventListener('click', add_row, false);

function add_row(){
 event.preventDefault();
 var new_name=document.getElementById("new_name").value;
 var new_level=document.getElementById("levels-list").value;

 var table=document.getElementById("data_table");
 var table_len=(table.rows.length)-1;

 var row = table.insertRow(table_len).outerHTML=
 "<tr id= 'row"+table_len+"'>\
    <td id='name_row"+table_len+"'>"+new_name+"</td>\
    <td id='level_row"+table_len+"'>"+new_level+"</td>\
    <td><input type='button' id='edit_button"+table_len+"' value='Edit' class='edit' onclick='edit_row("+table_len+")'> \
        <input type='button' id='save_button"+table_len+"' value='Save' class='save' onclick='save_row("+table_len+")'> \
        <input type='button' value='Delete' class='delete' onclick='delete_row("+table_len+")'>\
    </td>\
 </tr>";

 document.getElementById("new_name").value="";
}

function edit_row(no)
{
 document.getElementById("edit_button"+no).style.display="none";
 document.getElementById("save_button"+no).style.display="block";

 var name=document.getElementById("name_row"+no);
 var level=document.getElementById("level_row"+no);

 var name_data=name.innerHTML;
 var level_data=level.innerHTML;

 name.innerHTML="<input type='text' id='name_text"+no+"' value='"+name_data+"'>";
 /*level.innerHTML="<select id="levels-list">\
                    <option value="A" id="option-1">A</option>\
                    <option value="B" id="option-2">B</option>\
                    <option value="C" id="option-3">C</option>\
                    </select>" ;*/
}//end

在此处输入图片说明

对您的编辑功能进行了一些更改。 使用“no”为下拉框分配了一个不同的 id,然后使用它来设置值。

function edit_row(no)
{
 document.getElementById("edit_button"+no).style.display="none";
 document.getElementById("save_button"+no).style.display="block";

 var name=document.getElementById("name_row"+no);
 var level=document.getElementById("level_row"+no);

 var name_data=name.innerHTML;
 var level_data=level.innerHTML;

 name.innerHTML="<input type='text' id='name_text"+no+"' value='"+name_data+"'>";
 level.innerHTML='<select id="levels-list'+no+'">\
                    <option value="A" id="option-1">A</option>\
                    <option value="B" id="option-2">B</option>\
                    <option value="C" id="option-3">C</option>\
                    </select>' ;

document.getElementById("levels-list"+no).value = level_data;        

}//end

暂无
暂无

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

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