Onsen 2.0-使用Javascript向Ons开关添加事件侦听器
我担心我错过了一些非常简单的东西,但我已经尝试了多次尝试,出现了各种错误。关于守则:Onsen 2.0-使用Javascript向Ons开关添加事件侦听器,javascript,onsen-ui,monaca,Javascript,Onsen Ui,Monaca,我担心我错过了一些非常简单的东西,但我已经尝试了多次尝试,出现了各种错误。关于守则: <script> document.getElementById("optStats").on("change", function(e) { alert("Switch changed!"); }); </script> <ons-switch modifier="list-item" id="optStats"></ons-swi
<script>
document.getElementById("optStats").on("change", function(e) {
alert("Switch changed!");
});
</script>
<ons-switch modifier="list-item" id="optStats"></ons-switch>
我在ons.ready()中使用了它,并在外部尝试了它,这导致了相同的错误,无法读取addEventListener的属性,如上所述
document.getElementById('optStats').addEventListener('change', function(e) {
console.log('click', e.target.checked);
});
上次更新我发誓:
最后谢谢你,弗兰·迪奥斯强>
在处理完这个之后,init不是您想要使用的事件,您肯定想要使用show来完成我想要做的事情
document.addEventListener("show", function(event){
if (event.target.id == "pgOptions") {
document.getElementById('optStats').addEventListener('change', function(e) {
localStorage.setItem('useDetailedStats', e.target.checked);
useDetailedStats = e.target.checked;
});
document.getElementById('optStats').setChecked(useDetailedStats);
}
},false);
无论出于何种原因,在
上使用init时,只要按下该选项卡,就会导致开关改变状态。通过使用show,它不会。此外,当我记录init操作时,尽管页面在应用程序启动时没有显示,但仍然被记录为init两次。“秀”不会导致这种情况。不管怎样,@fran dios提供的代码都是获得我所需内容的正确基础,他的答案仍然正确,我只需要使用另一个事件。恐怕你是对的。也许您想要使用的是JS而不是jQuery。其余的应该是正确的
更新:
超级简单的例子:
我放置了document.getElementById(“optStats”).addEventListener(“change”,function(){alert('t');})在ons.ready()函数中执行code>,以确保加载了DOM,并导致类似的错误,但addEventListener的无法读取属性除外。那么,如果这不起作用,你认为保存设置开关的最佳方法是什么,屏幕的加载/退出(推/弹出)?@Munsterlander I添加了一个例子。确保您正在查找具有getElementById
的内容。可能你的交换机没有连接到DOM吗?我检查并确认了。奇怪的是,我将我的代码复制到了你的示例中,它可以工作,但在我的应用程序中却不行。我在我的应用程序中遇到与上面列出的相同的错误。我被难住了。它在模板中不起作用吗?如果你以前没有推送模板的内容,它就不起作用了。模板类似于不同的html文件,它们的内容没有附加到DOM,因此使用getElementById
无法找到它。
document.addEventListener("show", function(event){
if (event.target.id == "pgOptions") {
document.getElementById('optStats').addEventListener('change', function(e) {
localStorage.setItem('useDetailedStats', e.target.checked);
useDetailedStats = e.target.checked;
});
document.getElementById('optStats').setChecked(useDetailedStats);
}
},false);
<ons-page>
<ons-switch id="mySwitch"></ons-switch>
</ons-page>
-----
document.getElementById('my-switch').addEventListener('change', function(e) {
console.log('click', e);
});
document.addEventListener("init", function(event) {
if (event.target.id == "my-page") {
document.getElementById("my-switch").addEventListener('change', function(e) {
console.log('click', e);
});
}
}, false);