为什么我的if-else语句没有正确执行
Why is my if-else statement not executing correctly?
我有一个问题,为什么我的if-else语句不工作。
我得到了一个带有文本输入的表单,当用户输入他们想要的大小时,它应该实时编辑图片。我使用的addclass和removeclass方法从jQuery。这是我的脚本:
function slide() {
var n = Number(document.getElementById('Getal1').value)
if (n >= 101 && n < 201)
$(openDiv1());
else if(n > 200)
$(openDiv2());
else if(n >= 0 && n < 101)
$(closeDiv());
else {
alert("You did not enter a number!")
}
}
$(function openDiv1() {
$( "#ombouw_wrap" ).addClass( "Addclass_ombouw_wrap_2block", 1, callback );
return false;
});
function callback() {
setTimeout(function() {
$( "#midden" ).removeClass( "Addclass_ombouw_wrap_1block Addclass_ombouw_wrap_3block" );
}, 0 );
}
$(function openDiv2() {
$( "#ombouw_wrap" ).addClass( "Addclass_ombouw_wrap_3block", 1, callback );
return false;
});
function callback() {
setTimeout(function() {
$( "#midden" ).removeClass( "Addclass_ombouw_wrap_1block Addclass_ombouw_wrap_2block" );
}, 0 );
}
$(function closeDiv() {
$( "#ombouw_wrap" ).addClass( "Addclass_ombouw_wrap_1block", 1, callback );
return false;
});
function callback() {
setTimeout(function() {
$( "#midden" ).removeClass( "Addclass_ombouw_wrap_2block Addclass_ombouw_wrap_3block" );
}, 0 );
}
window.onload = closeDiv;
这是我的HTML代码:
Lengte: <INPUT TYPE="text" NAME="numeric" onKeyup="slide()" id="Getal1" onKeyPress="return checkIt(evt)">
x Hoogte: <input type="text" ID="Getal2" onKeyPress="return checkIt(evt)">
x Diepte: <input type="text" ID="Getal3" onKeyPress="return checkIt(evt)">
</form>
当您重新加载页面时,您会看到它不是从closediv开始,而是直接从添加类开始,而不执行if-else语句。
我在这里做错了什么?
这是因为jQuery将当您重新加载页面时,您会看到它不是从closediv开始,而是直接从添加类开始,而不执行if-else语句。
$(function)
视为$.ready(function)
的方便形式:传递的函数对象在页面加载时执行。也就是说,$(function openDiv1() {...})
定义了一个函数对象,然后传递给jQuery,在页面加载时自动执行。相反,从$(...)
中删除这些函数。例如,function openDiv1() {...}
就足够了。(这也将修复无法调用openDiv1
的错误——因为它是一个函数表达式,它不会被赋值给作用域中的变量/属性。)
下面描述了slide
函数的一个问题。
JavaScript做一些强制;下面显示了为什么永远无法到达else分支:
Number("") // same as Number(0)
Number("") >= 0 // true
但是,真的,请不要使用Number
(它是number
的包装对象),考虑parseInt(str, 10)
作为替代品。作为额外的奖励,parseInt("", 10)
的计算结果为NaN
(不是0),并且由于NaN >= 0
为假,这将解决初始问题。
function slide(){
var n = parseInt(document.getElementById('Getal1').value, 10)
if (n >= 0 && n <= 100) {
$(closeDiv())
} else if (n > 100 && n <= 200) {
$(openDiv1())
} else if (n > 200) {
$(openDiv2())
} else {
alert("You did not enter a number!")
}
}
还要注意我添加的一致性更改。括号不是必需的,但我发现它有助于以一致的格式良好/缩进良好的样式编写。其他需要注意的事情是if/else语句的顺序以及比较(保持"流畅")。
快乐编码。
你在$()
中包装你的函数,当你试图定义它们时,它将执行它们…
// alerts 1
$(function myFunc(){ alert(1) })
你需要在if/else语句之前定义函数,就像这样…
// does not execute until called
function myFunc(){ ... }
我不是Javascript程序员,但我相信您在IF/ELSE语句上缺少一些大括号。根据W3,正确的语法应该是:
if (condition1){
Handle condition1
}
else if (condition2){
Handle condition2
}
else{
Handle the rest
}
当然,如果不是这种情况,并且不需要大括号,那么我希望其他人可以帮助你:)。
- 页面在我的javascript执行后重新加载,我不希望它这样做
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 我的指令在ngRepeat和ngInclude之前执行,尽管默认优先级为0
- 如何使我的javascript在页面加载后继续执行
- 为什么黄瓜不执行我的步骤定义
- 为什么addEventListener只执行我的函数,而不为其创建鼠标悬停/鼠标打开事件
- 为什么我不能在我的OnclientClickEvent之后执行我的onClick
- JavaScript/Jquery没有执行我的函数
- 如何执行我的回调函数是一个自定义Dojo模块
- 在动态插入的jQuery库完成加载后,执行我的jQuery脚本
- 为什么我的GSP拉在我的AngularJS javascript文件,但不执行我的控制器函数
- 如何在jquery提交之前执行我的函数,直到验证是正确的
- 我应该如何使用AJAX执行我的php代码
- 为什么改变图像的来源,执行我的内联javascript
- 为什么当值大于时不执行我的 jQuery 函数
- 如何让Aptana/Firefox执行我的JavaScript而不是显示代码?
- 窗口.Onresize = function {//code}似乎没有执行我的内部代码
- Angular JS - 我的控制器功能在执行我的服务脚本后永远不会返回
- 如何在新打开的镶边标签上执行我的内容脚本
- 为什么Google Places API没有执行我的请求