javascript错误

Som*_*Guy 3 javascript

如果,我的脚本正在工作

<script type="text/javascript">
$(document).ready(function() { 
    $('#holidayDate').datepicker(); 
    var availableTags = ["New years Day", "Martin Luther King Day", "Groundhog Day", "Valentine's Day", "Washington's Birthday", "Easter", "Earth Day", "National Arbor Day", "Mother's Day", "Memorial Day", "Flag Day", "Father's Day", "Independence Day", "Labor Day", "Columbus Day", "Halloween", "Veterans Day", "Thanksgiving Day", "Pearl Harbor Remembrance Day", "Christmas Day"]; 
    $("#tags").autocomplete({source:availableTags}); 
    $('#holidayDate').change(function() { 
        if ($(this).val().substring(0, 5) === '12/25') { 
            $('#tags').val('Christmas Day'); 
        }
        else { 
            $('#tags').val(''); 
        }                
    }); 
}); 
</script>
Run Code Online (Sandbox Code Playgroud)

如果我使用"if"或"else if"包含多个值,它就无法工作

<script type="text/javascript">
$(document).ready(function() { 
    $('#holidayDate').datepicker(); 
    var availableTags = ["New years Day", "Martin Luther King Day", "Groundhog Day", "Valentine's Day", "Washington's Birthday", "Easter", "Earth Day", "National Arbor Day", "Mother's Day", "Memorial Day", "Flag Day", "Father's Day", "Independence Day", "Labor Day", "Columbus Day", "Halloween", "Veterans Day", "Thanksgiving Day", "Pearl Harbor Remembrance Day", "Christmas Day"]; 
    $("#tags").autocomplete({source:availableTags}); 
    $('#holidayDate').change(function() { 
        if ($(this).val().substring(0, 5) === '12/25') { 
            $('#tags').val('Christmas Day'); 
        }
        if ($(this).val().substring(0, 5) === '01/01') { 
            $('#tags').val('New years Day'); 
        } 
        if ($(this).val().substring(0, 5) === '02/02') { 
            $('#tags').val('Groundhog Day'); 
        } 
        if ($(this).val().substring(0, 5) === '02/14') { 
            $('#tags').val('Valentine's Day'); 
        } 
        if ($(this).val().substring(0, 5) === '04/22') { 
            $('#tags').val('Earth Day'); 
        } 
        if  ($(this).val().substring(0, 5) === '10/12') { 
            $('#tags').val('Columbus Day'); 
        } 
        if  ($(this).val().substring(0, 5) === '07/04') { 
            $('#tags').val('Independence Day'); 
        } 
        if  ($(this).val().substring(0, 5) === '10/31') { 
            $('#tags').val('Halloween'); 
        } 
        if  ($(this).val().substring(0, 5) === '11/11') { 
            $('#tags').val('Veterans Day'); 
        } 
        if  ($(this).val().substring(0, 5) === '12/07') { 
            $('#tags').val('Pearl Harbor Remembrance Day'); 
        } 
        else { 
            $('#tags').val(''); 
        }                
    }); 
}); 
</script>
Run Code Online (Sandbox Code Playgroud)

And*_*y E 7

其他人在这里打败了我的答案,但我仍然想提出一个小建议.当处理大量的ifelse时,如果将它交换为对象映射有时是有用的.目前,在您的代码中,您执行了大量不必要的查找,而这些查找至少应存储到变量中,但使用对象映射可以使此代码更简单:

var map = {
    "12/25": "Christmas Day",
    "01/01": "New Years Day",
    "02/02": "Groundhog Day",
    "02/14": "Valentine's Day",
    "04/22": "Earth Day",
    "10/12": "Columbus Day",
    "07/04": "Independence Day",
    "10/31": "Halloween",
    "11/11": "Veterans Day",
    "12/07": "Pearl Harbour Remembrance Day",
}
$('#holidayDate').change(function() {
    // Check our object map for the date, default to "" if there isn't one.
    $('#tags').val(map[$(this).val().substring(0, 5)] || ""); 
}); 
Run Code Online (Sandbox Code Playgroud)

非常整洁,IMO.

编辑:因为你不能让它工作,我为你创建了一个例子.


Mac*_*ade 6

$('#tags').val('Valentine's Day');
Run Code Online (Sandbox Code Playgroud)

你在这里有一些报价问题......
应该是:

$('#tags').val('Valentine\'s Day'); 
Run Code Online (Sandbox Code Playgroud)

注意反斜杠以逃避引用...