使用 JS/jQuery 将行动态添加到表中时行消失
Rows disappearing when adding them dynamically to table with JS/jQuery
我正在尝试创建一个表,我可以在其中随意添加行。 有许多问题可以解决这个问题,但我找不到一个可以解决我遇到的问题。 行在创建后会立即消失,并且在检查时不会反映在 html 中 (f12)。 我看过这个问题,也看过这个问题,他们没有解决这个问题。 这是我的网页:
<form id="taskList" style="width:60%">
<fieldset>
<table id="taskTable" style="width:100%">
<tr>
<th style="text-align:left">Task Number</th>
<th style="text-align:left"><abbr title="Total amount of time the task needs to run to finish execution.">Computation Time</abbr></th>
<th style="text-align:left"><abbr title="Does the task need exclusive use of the resource?">Resource Needed</abbr></th>
<th style="text-align:left"><abbr title="How often the task will repeat itself. Acts as a deadline since it must complete before restarting.">Deadline/Period</abbr></th>
<th style="text-align:left"><abbr title="Any number representing a task's priority. Higher numbers will be given precedence.">Priority</abbr></th>
</tr>
<tr>
<td>T1</td>
<td><input id="compTime_T1" value="5"/></td>
<td>
<select id="resNeeded_T1" name="res_T1">
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
</td>
<td><input id="period_T1" value="20"/></td>
<td><input id="priority_T1" value="0"/></td>
</tr>
</table>
<button id="addTaskButton">Add task...</button><br><br>
<input type="button" id="submitTaskSet" value="Generate Schedule"/>
<input type="button" id="resetTable" value="Clear Schedule"/>
</fieldset>
</form>
这是我拥有的原始 JavaScript(在尝试上述问题中建议的方法之前,效果甚至不太好)。
$('#addTaskButton').click(function () {addTaskToTable();});
$('#submitTaskSet').click(function () {generateSchedule();});
$('#resetTable').click(function () {resetTaskSet();});
//Variables
var taskTableRows = 1;
function addTaskToTable() {
taskTableRows += 1;
var taskNumStr = taskTableRows.toString();
var table = document.getElementById("taskTable");
var row = table.insertRow(taskTableRows);
var cellTaskNum = row.insertCell(0);
var cellCompTime = row.insertCell(1);
var cellRes = row.insertCell(2);
var cellPeriod = row.insertCell(3);
var cellPrio = row.insertCell(4);
cellTaskNum.innerHTML = "T" + taskNumStr;
cellCompTime.innerHTML = "<input id='"compTime_T" + taskNumStr + "'" value='"5'"/>";
cellRes.innerHTML = "<select id='"resNeeded_T" + taskNumStr + "'" name='"res_T" +
taskNumStr + "'">" + "<option value='"yes'">Yes</option>" +
"<option value='"no'">No</option></select>";
cellPeriod.innerHTML = "<input id='"period_T" + taskNumStr + "'" value='"20'"/>";
cellPrio.innerHTML = "<input id='"priority_T" + taskNumStr + "'" value='"0'"/>";
}
这是一个jsFiddle。(编辑:使用不同的方法,以免破坏JSFiddle)
我不知道这是否可能是特定于浏览器的问题,因为有时它似乎可以在IE11中工作,但在Firefox或Chrome中却从未工作过。 任何建议将不胜感激。
表单内有一个按钮,其默认操作是提交表单,因此通过在单击处理程序中调用 event.preventDefault() 来防止它
$('#addTaskButton').click(function(e) {
e.preventDefault()
taskTableRows += 1;
var taskNumStr = taskTableRows.toString();
//var table = document.getElementById("taskTable");
//var row = table.insertRow(taskTableRows);
//var cellTaskNum = row.insertCell(0);
//var cellCompTime = row.insertCell(1);
//var cellRes = row.insertCell(2);
//var cellPeriod = row.insertCell(3);
//var cellPrio = row.insertCell(4);
var newRow = "<tr><td>T" + taskNumStr + "</td>" +
"<td><input id='"compTime_T" + taskNumStr + "'" value='"5'"/></td>" +
"<td><select id='"resNeeded_T" + taskNumStr + "'" name='"res_T" + taskNumStr + "'">" +
"<option value='"yes'">Yes</option>" +
"<option value='"no'">No</option></select></td>" +
"<td><input id='"period_T" + taskNumStr + "'" value='"20'"/></td>" +
"<td><input id='"priority_T" + taskNumStr + "'" value='"0'"/></td></tr>";
$('#taskTable tr:last').after(newRow);
});
演示:小提琴
add e.preventDefault()
$('#addTaskButton').click(function(e) {
e.preventDefault();
........
.....
<</div>
div class="answers"> 实际上,由于您在表单元素中使用了"按钮"并且当您单击它时,它将导致表单提交。在您的情况下,您尚未提供任何将导致整个页面刷新的表单 URL。这就是为什么你失去了添加的元素
好吧,您有两种方法可以解决此问题。 选择以下任一选项
将按钮元素的类型更改为"按钮"。默认类型为"提交",这将导致您的表单提交)
在"addTaskButton"按钮的点击事件中使用e.preventDefault()
在函数结束时使用return false;
您的页面正在重新加载。
相关文章:
- facebook”;添加评论“;popup获胜'不要消失
- 有角度的材质,当添加波纹时,它将填充而不是消失
- 我搜索了一些东西后,自己添加到谷歌的脚本就消失了
- 如何防止动态添加的元素在页面重新加载后消失
- 为什么当我在 jQuery 中添加切换事件时我的按钮消失了
- 当我通过javascript添加警报并取消事件时,滚动条消失了
- 使用 JS/jQuery 将行动态添加到表中时行消失
- Javascript:如何修改我的代码以在主题发布后添加回消失的占位符
- 使用 Javascript 动态添加的文本框中的文本消失
- 输入字段html5占位符没有'不要在javascript中添加值后就消失
- 动态添加的输入字段立即消失
- 当添加ASP代码时,导航在移动中消失,其他脚本在页面上冻结
- 流星助手添加适当的css一秒钟,然后消失
- 使用Bootstrap edit添加链接时,图像标签消失
- 向列表项添加锚标记,使列表项消失
- Sencha触摸日历,当添加更多的停靠项目时,列表消失
- 当我添加最后一个滑块时,所有的jQuery UI效果都会消失
- 为什么我添加到一个无序列表中的val在我添加它之后就消失了?
- qTip2 -所有的html内容消失添加css
- js将线形图添加到条形图中使条形图消失