我有两个变量:
var trafficLightIsGreen = false;
var someoneIsRunningTheLight = false;
Run Code Online (Sandbox Code Playgroud)
当两个变量符合我的条件时,我想触发一个事件:
if(trafficLightIsGreen && !someoneIsRunningTheLight){
go();
}
Run Code Online (Sandbox Code Playgroud)
假设这两个布尔值在任何时刻都可以改变,那么go()当他们根据我的条件改变时如何触发我的方法呢?
我有一个具有多个属性的对象变量.
MyVar = {"prop1" : 0, "prop2": 0....};
Run Code Online (Sandbox Code Playgroud)
如何编写侦听任何属性更改的事件侦听器.
谢谢你的建议.
请在Chrome浏览器中查看我的代码,如果点击刷新,系统会提示您选择2个选项.
- 离开这个页面和
- 保持此页上
当我点击2.停留在此页面按钮时,它必须激活我的自定义功能displayMsg()
谁能为我提供解决方案?
<script type="text/javascript">
function displayMsg() {
alert('my text..');
}
</script>
<script type="text/javascript">
window.onbeforeunload = function(evt) {
var message = 'Please Stay on this page and we will show you a secret text.';
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt) {
evt.returnValue = message;
return message;
}
trace(evt);
}
</script>
Run Code Online (Sandbox Code Playgroud) 可能重复:
侦听JavaScript或jQuery中的变量
如何跟踪此变量是否已更改?
var ConditionalFlag = 0;
Run Code Online (Sandbox Code Playgroud)
我试过这个:
var ConditionalFlag = 0;
$(ConditionalFlag).change(function () {
alert("Changed");
});
ConditionalFlag++;
Run Code Online (Sandbox Code Playgroud)
但无济于事.我考虑使用25ms计时器来检查这样的变化:
var ConditionalFlag = 0;
function CheckFlag() {
if (ConditionalFlag > 0) {
alert("Changed");
clearInterval(check);
}
}
var check = window.setInterval("CheckFlag()", 25);
ConditionalFlag++;
Run Code Online (Sandbox Code Playgroud)
然而,这似乎有点矫枉过正.有没有办法用jQuery或javascript将事件处理程序附加到此变量?
我有一个单页面应用程序,我正在研究变量x可能因多种原因而发生变化.我希望DOM中显示的值(下面的div)始终与javascript变量的值匹配.
我理解像angular这样的框架对此有好处,但我正在寻找一个更轻量级和简单的解决方案.如果有帮助的话,我已经在页面上使用了JQuery和underscore.js.
<script>
var x = 100
</script>
<div id="value_display">100</div>
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要一些我需要提供变量和元素作为参数的东西.例如:
bind(x,'#value_display')
Run Code Online (Sandbox Code Playgroud) 例如,我有var menu_ready = false;.我有一个ajax函数,menu_ready当ajax完成时设置为true:
//set up event listener here
$(...).load(..., function() {
...
menu_ready = true;
}
Run Code Online (Sandbox Code Playgroud)
如何设置等待为menu_ready真的事件监听器?
所以我被迫为我的学校完成一个使用javascript函数的在线课程,以确保每个学生在页面上停留至少"required_variable"的时间量.现在使用javascript控制台我可以将required_variable时间量重置为0,从而允许我在不等待时间的情况下转到下一页.所以我的问题是网站是否可能知道我正在重置他们的变量.我查看了他们的代码,我严重怀疑这个特定的网站可以,但我更想知道因为我设计网站,并且有一些javascript变量我不想在我的一些网站中被覆盖.
var obj = {};
obj.a = 1; // fire event, property "a" added
Run Code Online (Sandbox Code Playgroud)
这个问题是从不同的这一个,当已声明属性更改其中的方法来检测,正在讨论之中。
根据我在Flex中的经验,我学习了Bindable变量,例如,文本元素的内容随着变量的值而变化.
我想知道是否有可能在JavaScript中做这样的事情.例如,假设我有一个<h1 id="big_title">我想要包含文档标题的内容.这可以很容易地完成document.getElementById('big_title').innerHTML = document.title;,但如果document.title改变怎么办?我也必须手动更新big_title.
放置它的另一种方法是,有没有办法onchange在变量而不是DOM元素上创建类似于自定义的事件处理程序?此处理程序可以根据需要更新标题.
编辑:我知道我可以使用a setInterval来检查变量"绑定"(在数组中定义)并根据需要进行更新,但这有点像hack-ish并且需要在响应性和对性能的影响之间进行折衷.
我目前有一个运行基于Javascript的全局API的Web应用程序,它初始化如下:
var Api = {
someVar: "test",
someFunction: function() {
return "foo";
}
}
Run Code Online (Sandbox Code Playgroud)
此API在Web应用程序中的许多"窗口小部件"中共享,它们应该全部运行此单个Api实例,以便它们可以相互传递数据.
AJAX目前用于加载这些小部件,例如在小部件/ mywidget.html中,它放在,例如, <div id='widget_<random number>'>...</div>
代码的某些其他部分可能会选择添加更多功能Api,目前它的执行方式如下:
Api.myExtension = {
myNewFunction: function() {
return "bar";
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这种用法会产生一些问题:
问题一:如果一个小部件(这些可能由第三方提供)决定隐藏一些代码,并做类似的事情Api = {},摧毁Api一切所有的全局变量,并打破整个应用程序,该怎么办?是否有可能保护此Api变量不被外部覆盖?只允许"扩展"(添加新内容),但不允许"删除/更改".即:
Api.foo = { test: "bar" } // allowed
Api.someVar = "changing the existing someVar"; // not allowed
Run Code Online (Sandbox Code Playgroud)
以下代码位于"内部" Api,例如:
var Api = {
Debug: {
Messages = new Array,
Write: function() {
Api.Debug.Messages.push("test"); …Run Code Online (Sandbox Code Playgroud)