Safari 错误未定义不是对象

2024-03-18

我在这里阅读了一些关于我的问题的帖子,但我不知道如何将其应用到我的代码中,因为我不使用数组或其他对象。

在 Safari 中我收到此错误:

TypeError: undefined is not an object (evaluating '$('#related .expansion').data('handle').replace')

我有一个动态填充选择的函数,如下所示:

function expansieRubberSelect(){
  var url = $('#related .expansion').data('handle').replace('.html', '.ajax');
    $.getJSON(url, function(data){
        var select = '';
       $.each(data.variants, function (index, variant) {
          select += '<option value="'+variant.id+'" data-size="'+variant.title.replace(/\D/g,'')+'" data-price="'+variant.price.price_excl.toFixed(2)+'" data-priceincl="'+variant.price.price+'">'+variant.title+'</option>'
       });
       $("#related .expansion select").append(select);
    });
}

然后在我的文档中,我这样称呼它:

 $(function(){
     expansieRubberSelect()
 });

我读到,丢失一个对象显然是导致问题的原因。但是我不知道这如何适用于我的代码。 我需要将选择更改为数组或其他内容吗?然后像这样打电话expansieRubberSelect(mySelect)?

任何帮助表示赞赏!


感谢乌特卡诺斯的回答,我设法让它工作。 这个想法是检查元素是否存在。但是您也可以测试url存在。

function expansieRubberSelect(){
 if($('#related .expansion').length){
  var url = $('#related .expansion').data('handle').replace('.html', '.ajax');
    $.getJSON(url, function(data){
        var select = '';
       $.each(data.variants, function (index, variant) {
          select += '<option value="'+variant.id+'" data-size="'+variant.title.replace(/\D/g,'')+'" data-price="'+variant.price.price_excl.toFixed(2)+'" data-priceincl="'+variant.price.price+'">'+variant.title+'</option>'
       });
            $("#related .expansion select").append(select);
    });
 }
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Safari 错误未定义不是对象 的相关文章