Javascript 覆盖相同的命名函数,尽管在 Chrome 中有条件
Javascript Overwriting Same Named Functions Despite Conditionals In Chrome
在我的javascript文件中,我正在使用var screenheight = window.screen.height
我使用此高度测量值来确定是使用一组函数还是使用一组几乎相同的函数。所有函数都有完全相同的名称,但如果某人的屏幕高度高于某个阈值,他们将得到一组而不是另一组。
这在Firefox中工作得很好,但是在Chrome中,无论如何它都使用后一组功能。
关于此行为的另一个奇怪之处在于,在我在其条件中拥有函数集之前,我有一个条件,该条件根据屏幕高度调用正确设置某些元素的样式。
我不知道它为什么要这样做。它看起来类似于下面的这种过度简化。
var screenheight = window.screen.height;
window.onload = init;
function init() {
if(screenheight > 800 && screenheight <= 1100) {
document.getElementById("someid").style.height = 700px;
}
}
if(screenheight > 700 && screenheight <= 800) {
function functionone() {
document.getElementById("someotherid").style.height = 500px;
}
} else if(screenheight > 800 && screenheight <= 1000) {
function functionone() {
document.getElementById("someotherid").style.height = 600px;
}
}
这在Firefox中运行良好,但Chrome更喜欢第二个版本的functionone()
编辑:为了清楚起见,我清理了一下假代码。缺少括号和格式错误的条件。
Javascript 不会使用块作用域,除非你使用 'let' 关键字。
看起来有一些错别字会阻止 chrome 运行它。
- PX 值缺少引号
- <= 之前的缺失值
- 非闭合函数,
- 未调用的函数
- 未关闭的否则 if 语句
这是未经测试的,但请尝试修复语法。
var screenheight = window.screen.height;
window.onload = init;
function init() {
if(screenheight > 800 && screenheight <= 1100) {
document.getElementById("someid").style.height = '700px';
}
}
if(screenheight > 700 && screenheight <= 800) {
(function functionone () {
document.getElementById("someotherid").style.height = '500px';
})();
} else if(screenheight > 800 && screenheight <= 1000) {
(function functionone() {
document.getElementById("someotherid").style.height = '600px';
})();
}
JavaScript 没有块级作用域(变量作用域为大括号);相反,JavaScript 具有函数级作用域。函数内声明的变量是局部变量,只能在该函数内或由该函数内的函数访问。裁判
在 JavaScript 中,所有全局函数都child
window
对象。
在此示例中,稍后在代码中声明的function functionone()
将始终重写前面的函数。
它将很像这样:
var obj = {
a: 10
};
obj.a = 20;
alert(obj.a);
您可以尝试此方法:
var screenheight = window.screen.height;
//screenheight = 900;
var functionone = (function() {
if (screenheight > 700 && screenheight <= 800) {
return function() {
document.getElementById("someotherid").style.height = '500px';
}
} else if (screenheight > 800 && screenheight <= 1000) {
return function() {
document.getElementById("someotherid").style.height = '600px';
}
}
})();
console.log(functionone);
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<div id="someotherid"></div>
编辑:您在代码中的条件中有语法错误,缺少引号和缺少变量,如 curtwphillips 突出显示的那样
相关文章:
- 通过js在新选项卡中有条件地打开url
- jQuery-有条件地附加HTML
- 有条件更新d3.js力图中节点的最佳方法
- Woocommerce产品选项有条件
- 有条件地在选项标记中应用布尔属性
- ADF:有条件地加载javascript资源
- 如何有条件地更改角度中的orderBy参数
- 无法在有条件呈现的富:面板上提交h:form
- 有条件地与react路由器链接
- 有条件地运行javascript函数-Razor,HTML
- 如何使用图表包装函数有条件地格式化谷歌可视化表单元格
- CSS根据属性的可用性有条件地应用样式
- 将字段设置为有条件地使用所需的字段验证器
- 将https替换为有条件的锚标记Javascript
- JavaScript while循环没有'不能在有条件的情况下工作
- 如何用d3有条件地移除元素
- 有条件刷新页面-如何设置引用人
- Javascript 覆盖相同的命名函数,尽管在 Chrome 中有条件
- 有条件地将内容脚本加载到 Safari 扩展中,就像在 FF/Chrome 中一样
- JS有条件地在Chrome上工作,但不能在Firefox上工作