如果其他是咖啡脚本
if else in coffee script
Folks,
我的html中有两个文本框。我想用咖啡脚本来比较他们的价值观。尽管我已经在谷歌上搜索过了,我有点确定我在做预期的事情,但我仍然看到了一种奇怪的行为。
问题是:
比方说,我有两个文本框,id分别为"title"answers"author"。除此之外,我还有一个按钮,onclick可以触发咖啡脚本功能。
我的咖啡脚本函数看起来是:
check_fields = ->
elem_book_title = $("#title").val()
elem_book_author = $("#author").val()
alert(elem_book_title)
alert(elem_book_author)
if not elem_book_title?
alert("title is null")
else if not elem_book_author?
alert("author is null")
else
alert("both are ok")
情况是,如果我只在"标题"文本框中输入一些内容,它会提醒我"作者为空"。正确的但令人惊讶的是,它提醒我"两者都很好"。。预期?或者我错过了什么?
在jQuery中,.val()
不会为空字段返回null(select元素除外)。现在,您的咖啡脚本评估为:
if (elem_book_title == null) {
return alert("title is null");
} else if (elem_book_author == null) {
return alert("author is null");
} else {
return alert("both are ok");
}
所以试着去掉的问号
if not elem_book_title
alert("title is null")
else if not elem_book_author
alert("author is null")
else
alert("both are ok")
这将产生我认为您所期望的js(它正在测试像空字符串、0或null
这样的错误):
if (!elem_book_title) {
return alert("title is null");
} else if (!elem_book_author) {
return alert("author is null");
} else {
return alert("both are ok");
}
这里有一个关于coffeescript的存在算子(?
)工作方式的问题,你可能会发现它提供了信息(谢谢@raina77ow)。
您应该检查"" (blank)
,因为当文本框中没有输入值时,.val()
函数将返回"。
你可以这样做:
check_fields = ->
elem_book_title = ""
elem_book_author = "asdasd"
if not elem_book_title? or elem_book_title == ""
alert("title is null")
else if not elem_book_author? or elem_book_author == ""
alert("author is null")
else
alert("both are ok")
生成的JS
var check_fields;
check_fields = function() {
var elem_book_author, elem_book_title;
elem_book_title = "";
elem_book_author = "asdasd";
if ((elem_book_title == null) || elem_book_title === "") {
return alert("title is null");
} else if ((elem_book_author == null) || elem_book_author === "") {
return alert("author is null");
} else {
return alert("both are ok");
}
};
提示:当调试if not else if not els时,我发现在块中使用除非和返回代码更容易
return alert("title is null") unless elem_book_title
return alert("author is null") unless elem_book_author
alert("both are ok")
其产生类似的JS
if (!elem_book_title) {
return alert("title is null");
}
if (!elem_book_author) {
return alert("author is null");
}
alert("both are ok");
相关文章:
- 如果其他是咖啡脚本
- 咖啡脚本意外换行符
- 咖啡脚本意外的条件评估
- Wing IDE 中咖啡脚本的语法突出显示
- 如何在咖啡脚本中识别提交按钮,Rails 3应用程序
- 从函数(咖啡脚本)内以定时间隔触发函数
- 带有全局变量、咖啡脚本和回调的模块 CSV
- Chome和Firefox阻止修改派生类'咖啡脚本中的原型
- 为什么这个咖啡脚本没有编译“;正确”;
- 咖啡脚本中的回调
- 我的基于节点的咖啡脚本未运行(错误%1不是有效的应用程序.)
- 咖啡脚本和浏览器缓存
- 如何将一行咖啡脚本代码转换为多行
- 咖啡脚本数组查找下一个位置
- 咖啡脚本一行,用于创建带有变量键的哈希图
- 使用表单输入中的咖啡脚本编辑保存的值
- 咖啡脚本中的嵌套方法
- 咖啡脚本化的 ajax 调用结果在实际成功时失败回调
- 在同一项目上使用咖啡脚本和打字稿
- 咖啡脚本、类和函数