我有这个coffeescript代码
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>
你能帮帮我吗?提前谢谢。
P.S。:我在编译的javascript中验证了coffeescript代码的正确性。我使用括号来封装两个布尔条件,但也不起作用。
答案 0 :(得分:1)
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中仍然是真实的,就像在JavaScript中一样。
答案 1 :(得分:1)
我认为你的咖啡语法错误。
在CoffeeScript
中
is
=&gt; ===
not
=&gt; !
$('#textName').val() is not ""
=&gt; $('#textName') === !""
所以,你永远不会通过这个条件。因为!"" === true