我的WinJS页面中有几个按钮。
<button id="btn1">
Button 1
</button>
<button id="btn2"">
button 2
</button>...
和javascript将点击事件添加到点击按钮:
(function () {
WinJS.UI.processAll().done(function () {
var showButton = document.querySelector("xxx");
showButton.addEventListener("click", function () {
});
});
})();
如何确定点击了哪个按钮并将“xxx”的值设置为该按钮的id(btn1,btn2等...)
答案 0 :(得分:2)
如果我理解正确,当你有多个连接到单个事件处理程序的按钮时,你想要识别按钮(发送者)。
MSDN:
在JavaScript中,Windows运行时事件参数表示为a 单一事件对象。在以下事件处理程序示例中 方法,ev参数是包含发送者的对象 (目标属性)和其他事件参数。事件 参数是为每个事件记录的参数。
因此,您需要为事件处理程序定义一个参数并使用其target属性。 假设您有以下HTML:
<div id="label1"/>
<div>
<button id="button1">Button1</button><br />
<button id="button2">Button2</button><br />
<button id="button3">Button3</button><br />
</div>
并将一个事件处理程序附加到所有按钮:
var button1 = document.getElementById("button1");
button1.addEventListener("click", buttonClickHandler);
var button2 = document.getElementById("button2");
button2.addEventListener("click", buttonClickHandler);
var button3 = document.getElementById("button3");
button3.addEventListener("click", buttonClickHandler);
您可以通过以下方式访问发件人:
function buttonClickHandler(eventInfo) {
var clickedButton = eventInfo.target;
var label1 = document.getElementById("label1");
label1.innerHTML = clickedButton.id.toString();
}
答案 1 :(得分:1)
这是获取按钮的WinJS解决方案:
var buttons = WinJS.Utilities.query('button');
然后您可以将事件绑定到按钮上:
buttons.forEach(function (btn) {
btn.addEventListener("click", function () {
console.log('button ' + this.id + ' has been clicked.');
})
});
我是WinJS的新手,因此可能有一个更漂亮的解决方案来替换forEach
。
答案 2 :(得分:0)