0

我是 CoffeeScript 的新手,我不确定为什么这段代码没有正确评估。我收到 SyntaxError:意外的 ELSE。我要做的是根据 rule_log_type 下拉列表的选择动态更新 rule_severity 下拉列表。

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')
4

3 回答 3

1

It should probably be a else if instead of a else.

else if logtype == 'Microsoft Windows'
于 2013-06-10T08:46:17.493 回答
1

工作代码。我认为缩进在 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')
于 2013-06-10T09:25:47.813 回答
0

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')
于 2013-06-11T09:30:57.853 回答