2012-12-27 74 views
1

下面的代碼在變量mystyle的控制檯上給出了未定義的錯誤。我不明白,因爲我定義了變量。變量未定義,而其定義爲

jQuery('.styles_div').each(function() { 
switch (styles) { 
    case 'style1': 
     var mystyle = $('#stylewrap').append('<div class="style1"></div> '); 
     break; 
    case 'style2': 
     var mystyle = $('#stylewrap').append('<div class="style2"></div> '); 
     break; 
} 
$("#search").autocomplete({ 
    delay: 0, 
    minLength: 3, 
    search: function(event, ui) {mystyle.show();}, 
    ... 
}) 
}); 
+2

如果styles既不是style1也不是style2 –

回答

2

mystyle需要在它被使用之前被定義 - 也許作爲一個全局變量,並且沒有var關鍵字兩次。這也是謹慎的測試存在

var mystyle; 
switch (styles) { 
    case 'style1': 
     mystyle = $('#stylewrap').append('<div class="style1"></div> '); 
     break; 
    case 'style2': 
     mystyle = $('#stylewrap').append('<div class="style2"></div> '); 
     break; 
} 
$("#search").autocomplete({ 
    delay: 0, 
    minLength: 3, 
    search: function(event, ui) {if (mystyle) mystyle.show();}, 
    ... 
}) 

,如果這是完整的代碼,那麼也許這個代碼更簡單:

var mystyle = $('#stylewrap').append('<div class="'+styles+'"></div> '); 
+0

謝謝它的工作。 – Adige72

1

switch case之前定義mystyle。否則代碼是正確的。