写一个弹出框,绑定onclick事件是好像控制不了它的返回值。代码如下
function createBtn(){
for(var i = 0; i < _this.btn.length; i++){
var btn = document.createElement('span');
btn.id = 'btn_' + i;
btn.innerHTML = _this.btn[i];
btn.style.padding = '5px 15px';
btn.style.background = '#E5E5E5';
btn.style.borderRadius = '5px';
btn.style.marginRight = '15px';
btn.style.cursor = 'pointer';
document.getElementById('btn_box').appendChild(btn);
//btn.onclick = closeBox;
}
}
function closeBox(){
var box = document.getElementById('msg_box');
box.remove();
if(this.id == 'btn_0'){
isBool = true;
}else{
isBool = false;
}
return isBool;
}
var click_yes = function(){ alert("Yes has been clicked"); }; var click_no = function(){ alert("No has been clicked"); }; var btn_infos = [{id:"1",name:"yes",action:click_yes},{id:"2",name:"no",action:click_no}] function createBtn(btn_info){ var btn = document.createElement('span'); btn.id = 'btn_' + btn_info.id; btn.innerHTML = btn_info.name; btn.style.padding = '5px 15px'; btn.style.background = '#E5E5E5'; btn.style.borderRadius = '5px'; btn.style.marginRight = '15px'; btn.style.cursor = 'pointer'; //btn.onclick = btn_info.action; btn.addEventListener("click", btn_info.action, false); document.getElementById('btn_box').appendChild(btn); } btn_infos.forEach(function(btn_info){ createBtn(btn_info); });
提主提问题时最后能帮助答者准确明白你的意图,JS的话,至少copy下来能跑。 _this.btn 完全看不懂是什么东西,看评论后猜测可能是为了放“Yes”,“No”, 两个按钮的信息,如果是这样,我会按照这个意图来回答。
既然btns的ID,HTML,都是参数传递进去,事件不妨也放入数组中传递。
_this.btn 确实是用来存按钮的值的。你用事件传递进去是可以绑定事件弹出alert() 但我要的效果是在alert(),这里return 一个值给初始调用的地方接收这个值,不知道你这个要怎样写,怎么调用才能达到这个效果呀?
你那个remove究竟是想删除什么?索引都没有,还有你返回了没弹出是正常的,你压根就没调用你的返回值,比还是给个详细的代码来看看吧
可能我的实现方式就有问题,我要的效果就是模拟一个对话框,对话框里有“确定”
“取消”两个按钮,问题是要怎样知道点击的是哪个按钮呢?
你是想根据返回的值来判断是不是要触发onclick?
我想接收onclick的返回值呀
@web技术先锋: 很少听说事件有返回值的,直接设置一个全局变量算了。
用回调可以实现
(1)全局变量(2)callback