javascript代码上的布尔条件不起作用
Boolean condition on javascript code is not working
我有这个咖啡脚本代码
greet = ->
if $('#output').html() is 'Hi' and $('#textName').val() is not ""
$("#output").append(" how are you #{$('#textName').val()}?")
第二个条件是HTML输入的值。如果我退出第二个条件,脚本可以工作,但如果我把它放在上面的代码中,脚本无论如何都不工作。
我通过一些警报命令测试了输入的值,该值被实现了,所以问题不在于值本身,如果不是布尔值或函数如何工作的话,例如,如果我在输入中输入类似"Markus"的东西并运行此代码
greet = ->
if $('#output').html() is 'Hi' and $('#textName').val() is not ""
$("#output").append(" how are you #{$('#textName').val()}?")
alert $('#textName').val()
警报显示"Markus",但该功能仍然不起作用,.append无法向div添加文本。所涉及的HTML类似于
<body>
<form>
<fieldset>
<input placeholder="Put your name" id="textName" type="text">
</fieldset>
</form>
<div id="parent">
<div id="output" onmouseover="greet()">Hi</div>
</div>
</body>
你能帮我吗?提前谢谢。
附言:我在编译的javascript中验证了coffeescript代码的正确性。我也使用括号来封装这两个布尔条件,但都不起作用。
a is not b
不会做您认为它会做的事情。如果你看一下的JavaScript版本:
if $('#textName').val() is not ""
你会看到
if ($('#textName').val() === !"")
而!''
只是true
的一种奇怪的表达方式,所以你的条件语句最终会将字符串(或undefined
)与布尔值进行比较,这永远不会是真的。
与is
(AKA ==
)相反的是isnt
(AKA !=
);is not
是两个运算符,而不是一个。
如果你确信$('#textName').val()
总是会给你一个字符串,那么你想说:
# ------------------------------------------------------vvvv
if $('#output').html() is 'Hi' and $('#textName').val() isnt ""
或者你可以说:
if $('#output').html() is 'Hi' and $('#textName').val()
因为非空字符串在CoffeeScript中仍然是truthy,就像在JavaScript中一样。
我认为您的咖啡语法有误。在CoffeeScript
is
=>===
not
=>!
$('#textName').val() is not ""
=>$('#textName') === !""
所以,你永远不会通过这个条件。因为!"" === true
相关文章:
- 淘汰赛.JS'启用'长度绑定条件不起作用
- 第二个存在条件不起作用
- 快速键入时,Javascript onKeyUp条件不起作用
- JQuery中的条件不起作用
- Angularjs 多个“OR”条件不起作用
- 如果条件不起作用,则有类
- JavaScript:否则,如果条件不起作用
- 一个开关条件不起作用,而另一个条件不起作用
- 窗口.位置和条件不起作用 即,铬,野生动物园
- 点击功能内的多个条件不起作用
- 令人毛骨悚然:条件不起作用 - 毫无头绪
- 在 if 条件不起作用的情况下使用 .hasClass()
- 如果条件不起作用,则使用Javascript longhand
- javascript代码上的布尔条件不起作用
- 简单的javascript条件不起作用
- Angular js如果条件不起作用
- 为什么'如果'io.connect的条件不起作用
- jQuery窗口宽度条件不起作用
- JavaScript条件不起作用
- 如果Ajax和Jquery中的else条件不起作用