如何检查 coffeescript 中的语法错误
How to check syntax error in coffeescript
我不熟悉 coffee 脚本,我尝试将 jquery 从视图移动到资产中但无法使其工作。
这里是工作视图:
- jquery_ready do
$('label[for=voucher_name], input#voucher_name').hide();
$( "#voucher_voucher_provider_id" ).change(function() {
var exist_id = $(this).val();
var ids = $('#voucher_false_ids_')[0].value;
if(jQuery.inArray(exist_id, ids.split(" ")) !== -1){
$('label[for=voucher_name], input#voucher_name').hide();
}
else
{
$('label[for=voucher_name], input#voucher_name').show();
}
});
然后在/app/assets/javascript/mycode.js.coffee
jQuery ->
$('label[for=voucher_name], input#voucher_name').hide();
$( "#voucher_voucher_provider_id" ).change ->
exist_id = $(this).val();
ids = $('#voucher_false_ids_')[0].value;
alert('alert');
If(jQuery.inArray(exist_id, ids.split(" ")) !== -1)
$('label[for=voucher_name], input#voucher_name').hide();
else
$('label[for=voucher_name], input#voucher_name').show();
到目前为止,我能够 运行 直到 .change ->
警报('alert');
不是在我开始之后把所有行放在 If
之后
导致错误的原因:
ExecJS::RuntimeError at /admin
SyntaxError: [stdin]:6:51: unexpected =
帮助:正确的语法或来自 /Thanks 的错误是什么
如果您将该片段粘贴到 CoffeeScript 网站的 the "Try CoffeScript" page,它会告诉您哪里出了问题。
上面写着:
[stdin]:7:51: error: unexpected =
If(jQuery.inArray(exist_id, ids.split(" ")) !== -1)
^
CoffeeScript 没有 ===
或 !==
运算符。 ==
和 !=
在为您编译时被翻译为严格的等价物。
如果你修复它,你会得到另一个错误:
[stdin]:8:1: error: unexpected indentation
$('label[for=voucher_name], input#voucher_name').hide();
^^^^^^
这是因为上一行。您以 If
开始 if
语句,因此 CoffeeScript 不会将其视为 if
语句,而是将其视为对 If()
函数的函数调用。
将其更改为小写字母 if
然后它就可以正常编译了。
简版,这里固定:
jQuery ->
$('label[for=voucher_name], input#voucher_name').hide();
$( "#voucher_voucher_provider_id" ).change ->
exist_id = $(this).val();
ids = $('#voucher_false_ids_')[0].value;
alert('alert');
if(jQuery.inArray(exist_id, ids.split(" ")) != -1)
$('label[for=voucher_name], input#voucher_name').hide();
else
$('label[for=voucher_name], input#voucher_name').show();
我不熟悉 coffee 脚本,我尝试将 jquery 从视图移动到资产中但无法使其工作。
这里是工作视图:
- jquery_ready do
$('label[for=voucher_name], input#voucher_name').hide();
$( "#voucher_voucher_provider_id" ).change(function() {
var exist_id = $(this).val();
var ids = $('#voucher_false_ids_')[0].value;
if(jQuery.inArray(exist_id, ids.split(" ")) !== -1){
$('label[for=voucher_name], input#voucher_name').hide();
}
else
{
$('label[for=voucher_name], input#voucher_name').show();
}
});
然后在/app/assets/javascript/mycode.js.coffee
jQuery ->
$('label[for=voucher_name], input#voucher_name').hide();
$( "#voucher_voucher_provider_id" ).change ->
exist_id = $(this).val();
ids = $('#voucher_false_ids_')[0].value;
alert('alert');
If(jQuery.inArray(exist_id, ids.split(" ")) !== -1)
$('label[for=voucher_name], input#voucher_name').hide();
else
$('label[for=voucher_name], input#voucher_name').show();
到目前为止,我能够 运行 直到 .change -> 警报('alert'); 不是在我开始之后把所有行放在 If
之后导致错误的原因:
ExecJS::RuntimeError at /admin
SyntaxError: [stdin]:6:51: unexpected =
帮助:正确的语法或来自 /Thanks 的错误是什么
如果您将该片段粘贴到 CoffeeScript 网站的 the "Try CoffeScript" page,它会告诉您哪里出了问题。
上面写着:
[stdin]:7:51: error: unexpected =
If(jQuery.inArray(exist_id, ids.split(" ")) !== -1)
^
CoffeeScript 没有 ===
或 !==
运算符。 ==
和 !=
在为您编译时被翻译为严格的等价物。
如果你修复它,你会得到另一个错误:
[stdin]:8:1: error: unexpected indentation
$('label[for=voucher_name], input#voucher_name').hide();
^^^^^^
这是因为上一行。您以 If
开始 if
语句,因此 CoffeeScript 不会将其视为 if
语句,而是将其视为对 If()
函数的函数调用。
将其更改为小写字母 if
然后它就可以正常编译了。
简版,这里固定:
jQuery ->
$('label[for=voucher_name], input#voucher_name').hide();
$( "#voucher_voucher_provider_id" ).change ->
exist_id = $(this).val();
ids = $('#voucher_false_ids_')[0].value;
alert('alert');
if(jQuery.inArray(exist_id, ids.split(" ")) != -1)
$('label[for=voucher_name], input#voucher_name').hide();
else
$('label[for=voucher_name], input#voucher_name').show();