2017-05-16 34 views
0

「檢查」的未定義最近我得到一個錯誤遺漏的類型錯誤:無法讀取性能在public.js

*Uncaught TypeError: Cannot read property 'checked' of undefined 
    at HTMLDocument.<anonymous> (public.js:1) 
    at i (jquery.js:1) 
    at Object.fireWith [as resolveWith] (jquery.js:1) 
    at Function.ready (jquery.js:1) 
    at HTMLDocument.K (jquery.js:1)* 

這已經很長一段時間的工作,但我懷疑最近的更新會導致這個錯誤。 我沒有自己創建腳本,我對JS不太熟悉,但我仍然試圖弄清楚它。

如果我沒有記錯,這是相關代碼:

if($("#ship-to-different-address-checkbox").get(0).checked){$("#ship-to- 
different-address- 
checkbox").get(0).checked=false;$(".shipping_address").addClass("dhl- 
hide");$("#ship-to-different-address-checkbox").trigger("change");} 
+0

看起來像是在你的HTML發生了變化,這是造成$(「#船到不同的地址,勾選」)得到( 0)未定義 –

+0

嘗試恢復到以前的版本或在腳本中進行以下更改 - if($(「#ship-to-differen (0)&& $(「#ship-to-different-address-checkbox」)。get(0).checked){$(「#ship-to- different-address- (「。shipping_address」)。addClass(「dhl- hide」); $(「#ship-to-different-address-checkbox」)。觸發器(0).checked = false; $(「。shipping_address」 「change」);} – HarryJs

回答

0

「的劇本是正常工作的一些變化之前,但你不能確定哪一個」

有沒有關於多的信息導致此問題的情況,因此我將假設一些場景來幫助您找到解決方案。

場景1:假設在腳本運行時,元素在DOM中不可用,因此當您嘗試訪問屬性checked時,它將失敗。

確保只有在元素可用且準備就緒的情況下才能訪問屬性!見(https://learn.jquery.com/using-jquery-core/document-ready/),例如:

$(document).ready(function() { 
    if ($("#ship-to-different-address-checkbox").get(0).checked) { 
    $("#ship-to-different-address-checkbox").get(0).checked=false;$(".shipping_address").addClass("dhl-hide"); 
    $("#ship-to-different-address-checkbox").trigger("change"); 
    } 
}); 

爲什麼不放在最接近?

場景2:元素ID發生變化,所以選擇器返回未定義狀態。仔細檢查該元素的ID,檢查是否該元素存在並且是一個DOM元素試圖訪問屬性,並確認所選擇的element或DOM元素是正確類型的之前和具有屬性checked,例如:

// ID should always refer to a single element, 
// it's not valid to have more then one element ID in the page 
// So, expect only one: 
var element = $("#ship-to-different-address-checkbox") 

// You should do this for any other selector/element 
if (typeof element !== 'undefined' && element.is(":checkbox") && element.checked) { 
    element.checked.checked = false 
    // anything else 
    element.trigger("change"); 
} 

你當然可以,把它們放在一起,比如:

$(document).ready(function() { 
    var element = $("#ship-to-different-address-checkbox") 

    if (typeof element !== 'undefined' && element.is(":checkbox") && element.checked) { 
     element.checked.checked = false 
     // anything else 
     element.checked.trigger("change"); 
    } 
}); 
+0

你好@punkbit非常感謝你的精心迴應!我嘗試過應用您的解決方案,但不幸的是我的技能不夠好,無法獲得它。你能幫忙嗎(作爲報酬的回報)。 – dzinee

相關問題