2017-05-16 3 views
0

vor kurzem ich eine Störung erhalteUncaught Typeerror: kann Eigenschaft lesen ‚geprüft‘ undefinierter in 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)* 

Dies hat sich nun für eine lange Zeit gearbeitet, aber ich vermute, ein neues Update diesen Fehler verursacht. Ich habe das Skript nicht selbst erstellt und ich bin nicht so vertraut mit JS, aber ich versuche es immer noch herauszufinden.

Wenn ich mich nicht irre ist dies der entsprechende Code:

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

wie etwas scheint hat in Ihrem HTML geändert, die $ ("# ship-to-different-Adresse-Checkbox") erhalten verursacht (0) um undefiniert zu sein –

+0

Versuchen Sie, zur vorherigen Version zurückzukehren oder ändern Sie die Änderung in Ihrem Skript - if ($ ("# ship-to-differen t-address-checkbox "). get (0) && $ (" # schiff-zu-abweichende-adresse-checkbox "). get (0) .checked) {$ (" # ship-to different-address- checkbox "). Get (0) .checked = false; $ (". Versandadresse "). AddClass (" dhl- hide "); $ (" # ship-to-difference-adresse-checkbox "). Trigger ("change");} – HarryJs

Antwort

0

„Das Drehbuch war richtig funktioniert, bevor einige Änderungen, aber Sie können nicht erkennen, welche eine“

Es über die nicht viele Informationen sind Umstände, die dieses Problem verursachen, daher nehme ich ein paar Szenarien an, die Ihnen helfen, eine Lösung zu finden.

Szenario 1: Nehmen wir an, dass das Element zum Zeitpunkt der Skriptausführung nicht im DOM verfügbar ist. Wenn Sie also versuchen, auf die Eigenschaft checked zuzugreifen, schlägt es fehl.

Stellen Sie sicher, dass Sie nur auf eine Eigenschaft zugreifen, wenn das Element verfügbar und bereit ist! Siehe (https://learn.jquery.com/using-jquery-core/document-ready/), Beispiel:

$(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"); 
    } 
}); 

Und warum nicht legen Sie die Nähe zu den?

Szenario 2: Die Element-ID wurde geändert, sodass der Selektor nicht definiert zurückgegeben wird. Doppel für dieses Element die ID überprüfen, ob das Element vorhanden ist, und ist ein DOM-Element, bevor Sie auf die Eigenschaft zuzugreifen und bestätigen, dass das ausgewählte element oder DOM-Element des richtigen Typs und hat die Eigenschaft checked, Beispiel:

// 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"); 
} 

Sie können natürlich, setzen sie alle zusammen, wie:.

$(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

Hallo @punkbit vielen Dank für Ihre ausführliche Antwort! Ich habe versucht, Ihre Lösung anzuwenden, aber leider sind meine Fähigkeiten nicht gut genug, um es zu bekommen. Wären Sie in der Lage zu helfen (gegen eine Belohnung). – dzinee

Verwandte Themen