1
我試圖使用JavaScript來填充下拉列表和我得到在IE8以下錯誤:是否「...超出了範圍」。 KSLint中的錯誤導致'[1]爲空或不是對象'錯誤?
消息:「1」爲空或不是對象 行:59 字符:3 代碼: 0
當我推代碼通過調試器(在這種情況下,JSBin)時,可以看到的代碼如下錯誤:
線59:變量$ selected_view = $( '#ai1ec-視圖 - ' + matches [1]); ---'匹配'超出了範圍。
JSBin中的這個錯誤是否與IE8中的錯誤相關?當代碼在Chrome,FF或IE9上運行時,錯誤不會填充任何內容。
以下是有問題的代碼片段。
// Make current view actively selected in view dropdown button.
var classes = $('body').attr('class').split(' ');
for (i in classes) {
// Extract current view from the body class.
var matches = /ai1ec-action-([\w]+)/.exec(classes[i]);
if (matches != null) break;
}
// Get the dropdown menu link of the active view.
var $selected_view = $('#ai1ec-view-' + matches[1]);
// Replace contents of dropdown button with menu link, plus the caret.
$('#ai1ec-current-view')
.contents()
.remove()
.end()
.prepend($selected_view.contents().clone())
.append('<span class="caret"></span>');
// Deactivate all dropdown menu items.
$('#ai1ec-view-dropdown .dropdown-menu li').removeClass('active');
// Activate only currently selected dropdown menu item.
$selected_view.parent().addClass('active');
JSBin警告看起來似乎是假的,Javascript沒有塊範圍,所以'matches'變量實際上被作用於整個函數,因此在範圍內。 – lanzz