我有一个HTML-JavaScript脚本,用户可以使用表单的文本字段和插入按钮将数据插入到新数组[]
。
按下插入按钮,用户将输入的数据插入数组中
我有一个函数,它将数组的所有值打印到<p id="demo"></p>
并每100毫秒运行一次,以便使用数组值进行更新。
我还有一个重置按钮,可以在单击时删除每个数组的值。
我想要做的是在每个数组的值旁边添加一个删除按钮,以便用户更容易删除他插入的错误值。
我正在使用此代码插入值并打印它们:
HTML:
<div align="center">
<form id="form1">
<input type="text" name="fname" id="fname" placeholder="Type here!">
</form>
<br>
<input type="button" id="Button Insert" onclick="myFunction()" value="Insert">
<input type="button" onclick="myFunction3()" value="Reset">
</div>
<p id="demo" align="center"></p>
的JavaScript / JQuery的:
var all_values =[];
function myFunction() {
var temp_val = $("#fname").val();
all_values.push(temp_val);
document.getElementById("form1").reset();
}
setInterval(function () {
$("#demo").html(all_values.join("<br>"));
}, 100);
function myFunction3() {
all_values.length = 0;
}
更具体地说,我想要这样的事情:iOS example JSFiddle Example 1 JSFiddle Example 2。
你能帮帮我吗?提前谢谢。答案 0 :(得分:2)
我反过来做。
删除setInterval
,因为这样做非常糟糕。
id属性(id="Button-Insert"
,而不是id="Button Insert"
)中删除空格
Don't use onclick
attributes。相反,使用jQuery注册click事件处理程序
// caching is a good practice when you reffer to the same elements multiple times:
var all_values =[], demo = $("#demo"), form = $("#form1")[0], fname = $("#fname");
$('#Button-insert').click(function(){
var temp_val = fname.val();
all_values.push(temp_val);
// create delete button along with the value
demo.append('<p>'+temp_val+' <button value="'+temp_val+'" type="button" class="del-btn">Delete</button></p>');
form.reset();
});
$('#Button-reset').click(function(){
all_values = [];
demo.html('');
});
// event delegation for dynamic elements:
demo.on('click', '.del-btn', function(){
all_values.splice(all_values.indexOf($(this).val()), 1);
$(this).parent().remove();
});
答案 1 :(得分:0)
只需在创建表格的同时创建删除按钮。
function loadvalues(){
var i, button;
$('#demo').empty();
for(i in all_values){
$('#demo').append(all_values[i]);
button = $('<button>',{'text':'Delete'}).click(function(){
all_values.splice(this,1);
loadvalues();
}.bind(i)).appendTo('#demo');
$('#demo').append('<br>');
}
}
此外,您不需要轮询,您只需按需添加每个功能,如下所示:
function addVal(){
var val = $("#fname").val(), i = all_values.length;
all_values.push(val);
$('#demo').append(val);
button = $('<button>',{'text':'Delete'}).click(function(){
all_values.splice(this,1);
loadvalues();
}.bind(i)).appendTo('#demo');
$('#demo').append('<br>');
}
我有一些拼写错误,代码有效, 点击这里: http://codepen.io/anon/pen/QbvgpW