如果CoffeeScript中出现Else错误



我是新的CoffeeScript,我不知道为什么这段代码没有正确评估。我得到SyntaxError:意外的ELSE。我要做的是动态地更新rule_severity下拉基于rule_log_type下拉的选择。

jQuery ->
sev = $('#rule_severity').html()
$('#rule_log_type').change ->
    logtype = $('#rule_log_type :selected').text()
    if (logtype == 'Syslog')
        $('#rule_severity')
        .find('option')
        .remove()
        .end()
        .append('<option value="Emergency">Emergency</option>')
        .append('<option value="Alert">Alert</option>')
        .append('<option value="Critical">Critical</option>')
        .append('<option value="Error">Error</option>')
        .append('<option value="Warning">Warning</option>')
        .append('<option value="Notice">Notice</option>')
        .append('<option value="Information">Information</option>')
        .val('Information')
    else if (logtype == 'Microsoft Windows')
        $('#rule_severity')
        .find('option')
        .remove()
        .end()
        .append('<option value="Critical">Critical</option>')
        .append('<option value="Warning">Warning</option>')
        .append('<option value="Information">Information</option>')
        .val('Information')

应该是else if而不是else

else if logtype == 'Microsoft Windows'

工作代码。我认为缩进在CoffeeScript中是非常关键的。

JQuery ->
sev = $('#rule_severity').html()
$('#rule_log_type').change ->
    logtype = $('#rule_log_type :selected').text()
    switch logtype
        when 'Syslog'
            console.log(logtype)
            $('#rule_severity')
            .find('option')
            .remove()
            .end()
            .append('<option value="Emergency">Emergency</option>')
            .append('<option value="Alert">Alert</option>')
            .append('<option value="Critical">Critical</option>')
            .append('<option value="Error">Error</option>')
            .append('<option value="Warning">Warning</option>')
            .append('<option value="Notice">Notice</option>')
            .append('<option value="Information">Information</option>')
            .val('Information')
        when 'Microsoft Windows'
            console.log(logtype)
            $('#rule_severity')
            .find('option')
            .remove()
            .end()
            .append('<option value="Critical">Critical</option>')
            .append('<option value="Warning">Warning</option>')
            .append('<option value="Information">Information</option>')
            .val('Information')

CoffeeScript使用缩进来标识函数、控制块、参数列表等的作用域。您粘贴的代码除了将一个空函数传递给jQuery(与$(document).ready相同)外,没有语法错误。下面的代码更有可能是document.ready处理程序的全部内容,因为只有当DOM内容准备好时才能操作它们。

jQuery ->
  sev = $('#rule_severity').html()
  $('#rule_log_type').change ->
    logtype = $('#rule_log_type :selected').text()
    if (logtype == 'Syslog')
      $('#rule_severity')
        .find('option')
        .remove()
        .end()
        .append('<option value="Emergency">Emergency</option>')
        .append('<option value="Alert">Alert</option>')
        .append('<option value="Critical">Critical</option>')
        .append('<option value="Error">Error</option>')
        .append('<option value="Warning">Warning</option>')
        .append('<option value="Notice">Notice</option>')
        .append('<option value="Information">Information</option>')
        .val('Information')
    else if (logtype == 'Microsoft Windows')
      $('#rule_severity')
        .find('option')
        .remove()
        .end()
        .append('<option value="Critical">Critical</option>')
        .append('<option value="Warning">Warning</option>')
        .append('<option value="Information">Information</option>')
        .val('Information')

最新更新