Javascript阻止其他JavaScript工作

时间:2013-07-15 05:14:21

标签: javascript jquery

我对javascript相对较新。下面的代码可以阻止其他一些javascript(http://www.oesmith.co.uk/morris.js)在我的应用中运行。如果我删除下面的代码,Morris图表会正确呈现。下面的代码做我想要的,但它阻止图表显示。我在Rails中编程。任何想法我可能做错了以及如何解决它?

$(document).ready(function(){
var str = $("#rule_rule_type").val().toLowerCase();
if (str=="complex") {
    $("#id_ttl").hide();
    $("#id_condition_2").show();
    $("#id_value_2").show();
}
else if (str=="correlation") {
    $("#id_ttl").show();
    $("#id_condition_2").show();
    $("#id_value_2").show();
}
else if (str=="simple") {
    $("#id_ttl").hide();
    $("#id_condition_2").hide();
    $("#id_value_2").hide();
}

$("#rule_log_type").change(function () {
    logtype = $("#rule_log_type :selected").text();
        switch (logtype)
        {
            case "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>')
                    .append('<option value="Debug">Debug</option>');
                $("#rule_condition_1")
                    .find('option')
                    .remove()
                    .end()
                    .append('<option value="Severity">Severity</option>');
                $("#id_condition_2").hide();
                $("#id_value_2").hide();
                break;
            case "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>');
                $("#rule_condition_1")
                    .find('option')
                    .remove()
                    .end()
                    .append('<option value="Event ID">Event ID</option>')
                    .append('<option value="Instance ID">Instance ID</option>');
                $("#id_condition_2").show();
                $("#id_value_2").show();
                break;
        }
});

$("#rule_rule_type").change(function () {
    ruletype = $("#rule_rule_type :selected").text();
        switch (ruletype)
        {
            case "Complex":
                $("#id_ttl").hide();
                $("#id_condition_2").show();
                $("#id_value_2").show();
                break;
            case "Correlation":
                $("#id_ttl").show();
                $("#id_condition_2").show();
                $("#id_value_2").show();
                break;
            case "Simple":
                $("#id_ttl").hide();
                $("#id_condition_2").hide();
                $("#id_value_2").hide();
                break;
        }
});

});

2 个答案:

答案 0 :(得分:0)

我认为只是代码导致错误。

尝试定义logtyperuletype

替换:

var str = $("#rule_rule_type").val().toLowerCase();

使用:

var str = $("#rule_rule_type").val().toLowerCase(), 
    logtype, ruletype;

答案 1 :(得分:0)

很可能,$("#rule_rule_type")不在DOM中。

首先,请确认您是否尝试定位正确的id属性,并确保您没有拼错任何内容。然后,确保使用正确的方法对jQuery对象进行操作。 val()将返回HTML输入的当前值。 html()将从开放式HTML标记中检索HTML。