使用 JavaScript 在 for 循环中创建按钮
creating button in for loop using javascript
我将参数发送到服务器,它用数组对象响应我。我得到它并使用JSON.stringify
功能,然后JSON.parse
.当我在正文中分配按钮时,尽管它没有正确放置在 html 中,但它可以正常工作。如果我分配给迭代id
它有一个错误。我应该怎么做来处理问题并有一个单击事件来删除当前项目并将其删除。这是我的代码:
<script>
var param={user_id: localStorage.getItem('user_id')};
getmyItems(param,function(data){
var mtItem=JSON.stringify(data);
myItem=JSON.parse(mtItem);
console.log(myItem);
var Item=document.getElementById('myItems');
var buffer="";
for(var i=0;i<myItem.results.length;i++){
buffer +='<div class="row">';
buffer +='<div class="col-md-12">';
buffer +='<img src="'+myItem.results[i].images+'"/>';
buffer +='</div>';
buffer +='</div>';
buffer +='<div class="row">';
buffer +='<div class="col-md-4">';
buffer +='Created on:'+myItem.results[i].creation_date;
buffer +='</div>';
buffer +='<div class="col-md-4">';
buffer +='incident_date:'+myItem.results[i].item_date;
buffer +='</div>';
buffer += '<div class="col-md-4">';
buffer +='approval_date:'+myItem.results[i].approved_date;
buffer +='</div>';
buffer +='</div>';
buffer+='<div class="row">';
buffer+='<div class="col-md-12">';
buffer+='Title: '+myItem.results[i].title;
buffer+='</div>';
buffer+='</div>';
buffer+='<div class="row" id="'+i+'">';
var btn=document.createElement('input');
btn.setAttribute('type','button');
btn.setAttribute('class','btn btn-danger');
btn.value="Delete";
btn.onclick=(function (i){
return function(){
doDelete(myItem.results[i].item_id);
};
})(i);
document.getElementById('i').appendChild(btn);
buffer+='</div><hr/>';
}
Item.innerHTML=buffer;
});
function doDelete(s){
var param={
user_id: localStorage.getItem('user_id'),
session: sessionStorage.getItem('session'),
item_id: s
};
deleteItem(param, function(data){
alert(JSON.stringify(data));
});
}
</script>
我通过一些更改解决了这个问题。我评论人造丝提供的台词。它工作得很好。
var div = document.createElement('div');
div.innerHTML = buffer;
//var elem = div.firstChild;
Item.appendChild(div);
var btn = document.createElement('input');
btn.setAttribute('type', 'button');
btn.setAttribute('class', 'btn btn-danger');
btn.value = "Delete";
btn.onclick = (function(i) {
return function() {
doDelete(myItem.results[i].item_id);
};
})(i);
Item.appendChild(btn);
//document.getElementById(i).appendChild(btn);
好吧,在您的情况下,您正在尝试访问
DOM
中不存在的元素
不要在循环结束时创建buffer
和设置innerHTML
,而是创建div
元素并将buffer
元素设置为创建的div
元素的innerHTML
。 appendChild
for-loop
内部的buffer
元素,之后,您可以访问具有id
作为变量值的元素i
试试这个:
var myItem = {
success: true,
error_cod: 0,
results: [{
title: "flood",
creation_date: "2016/01/01"
}, {
title: "earthquake",
creation_date: "2016/01/05"
}]
};
var Item = document.getElementById('myItems');
for (var i = 0; i < myItem.results.length; i++) {
var buffer = "";
buffer += '<div><div class="row">';
buffer += '<div class="col-md-12">';
buffer += '<img src="' + myItem.results[i].title + '"/>';
buffer += '</div>';
buffer += '</div>';
buffer += '<div class="row">';
buffer += '<div class="col-md-4">';
buffer += 'Created on:' + myItem.results[i].creation_date;
buffer += '</div>';
buffer += '<div class="col-md-4">';
buffer += 'incident_date:' + myItem.results[i].creation_date;
buffer += '</div>';
buffer += '<div class="col-md-4">';
buffer += 'approval_date:' + myItem.results[i].creation_date;
buffer += '</div>';
buffer += '</div>';
buffer += '<div class="row">';
buffer += '<div class="col-md-12">';
buffer += 'Title: ' + myItem.results[i].title;
buffer += '</div>';
buffer += '</div>';
buffer += '<div class="row" id="' + i + '">';
buffer += '</div><hr/></div>';
var div = document.createElement('div');
div.innerHTML = buffer;
var elem = div.firstChild;
Item.appendChild(elem);
var btn = document.createElement('input');
btn.setAttribute('type', 'button');
btn.setAttribute('class', 'btn btn-danger');
btn.value = "Delete";
btn.onclick = (function(i) {
return function() {
doDelete(myItem.results[i].creation_date);
};
})(i);
document.getElementById(i).appendChild(btn);
}
function doDelete(s) {
alert(s);
}
<div id="myItems"></div>
相关文章:
- 创建按钮,根据表单字段中的数据获取特定的URL
- 当我通过.aspx.cs创建按钮时,它不起作用
- 创建按钮不调用表单内的任何操作
- Internet Explorer 8不允许动态创建按钮
- 如何在不加载页面的情况下创建按钮事件
- 使用动态创建按钮单击事件未触发
- “创建”按钮,用于切换不包含特定文本颜色的表行的可见性
- Javascript创建按钮不会显示在HTML中
- 函数创建按钮,带有传递参数的 onclick 函数
- JavaScript jQuery Mobile 在 for 循环中创建按钮
- 火狐工具栏上的创建按钮来执行JS
- 使用 JavaScript 在 for 循环中创建按钮
- 如何创建按钮转到测验软件中的下一个问题
- 需要帮助创建按钮以激活 JavaScript 函数
- 使用javascript从服务器端的名称列表中创建按钮/href
- 如何用JavaScript用onclick创建按钮
- 创建按钮时陷入无休止的循环
- 如何覆盖剑道网格中的创建按钮单击
- 动态创建的DIV在其他创建按钮中的位置
- 创建按钮到函数Javascript