Javascript 未捕获类型错误:无法读取属性';选中';public.js中未定义的

Javascript 未捕获类型错误:无法读取属性';选中';public.js中未定义的,javascript,jquery,Javascript,Jquery,最近我犯了一个错误 *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 HTM

最近我犯了一个错误

*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)*
“在进行某些更改之前,脚本工作正常,但您无法确定是哪一个”

关于导致此问题的情况,没有太多信息,因此我将假设一些场景来帮助您找到解决方案

场景1:假设在脚本运行时,元素在DOM中不可用,因此当您尝试访问属性
checked
时失败

确保仅当元素可用且准备就绪时才访问属性!见(),示例:

$(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");
  }
});
// 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");
}
为什么不把最靠近的地方放进去呢

场景2:元素ID已更改,因此选择器返回undefined。在尝试访问属性之前,请仔细检查该元素的ID,检查该元素是否存在并且是否为DOM元素,并确认所选的
元素
或DOM元素的类型正确,并且已选中属性,例如:

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

您的HTML中似乎发生了更改,导致$(“#发送到不同地址复选框”)。get(0)未定义,将还原到以前的版本或在脚本中进行以下更改--如果($(“#发送到不同地址复选框”)。get(0)&&$(“#发送到不同地址复选框”)。get(0)。选中){$(“#发送到-不同地址-复选框”).get(0).checked=false;$(“.shipping_address”).addClass(“dhl-hide”);$(“#发送到不同地址复选框”).trigger(“change”);}您好@punkbit非常感谢您的精心回复!我尝试过应用您的解决方案,但不幸的是我的技能不够好,无法获得。您能帮忙(作为回报)吗。