【问题标题】:jquery, IE 8 Invalid argument errorjquery,IE 8 无效参数错误
【发布时间】:2010-07-08 20:40:12
【问题描述】:

这段代码在 FF、Chrome 和 Safari 中运行良好,但 IE 8 在我运行它时会抛出几个 Invalid Argument 错误:

<script type="text/javascript">

    $(window).load(function() {
        $('div .box').each(function() {
            $(this).width($(this).find('img').width());
        });
    });

</script> 

You can see it in context here: 我的 html/css 技能或多或少一尘不染,但我对 jquery/javascript 几乎一无所知。我已经搜索过,但无法了解错误是什么以及如何修复它。非常感谢任何帮助。

谢谢。

【问题讨论】:

  • 你试过用$(document).ready替换$(window).load吗?
  • 如果您在开发过程中使用完整版本的脚本文件会有所帮助,因为它们往往会提供更好的错误消息,或者至少会破坏可以轻松调试的代码。
  • @James,感谢您的输入,我需要使用前者,因为我需要在找到宽度之前加载图像。

标签: jquery internet-explorer-8 arguments


【解决方案1】:

代码“$(this).find('img')”并非在所有情况下都能找到图像。试试:

$(window).load(function() {
  $('div .box').each(function() {
    var imageJQObject = $(this).find('img');
    if(imageJQObject.length > 0) {
      $(this).width(imageJQObject.width());
     }
  });
});

【讨论】:

  • 乔希,我想你已经破解了。谢啦。 3 个无效参数,3 个没有 imgs 的框。那讲得通。您编辑的代码完美运行。有什么我需要知道的吗?
  • 不是真的 "if(imageJQObject.length > 0)" 只是在操作之前检查 imageJQObject 中是否有对象。如果 imageJQObject 为空并且将宽度设置为 null 不好,“imageJQObject.width()”代码将返回 null。
【解决方案2】:

还有关于异常的任何其他信息,比如它是哪一行?我感觉找不到图像的宽度,因此您将this 的宽度设置为null。尝试将 img 宽度替换为 100 之类的东西,看看它是否仍然抛出。

【讨论】:

  • 您好,Darki Z,感谢您的意见。 jquery js 的第 116 行字符 165 显然。要替换值,我会这样做吗? ` $(window).load(function() { $('div .box').each(function() { $('100').width($(this).find('img').width( )); }); });` 如果那是正确的,那么你也是正确的。有解决办法吗?
【解决方案3】:

查看页面上的标记,您应该有

$(window).load(function() {  
    $('div.box').each(function() {  
        $(this).width($(this).find('img').width());  
    });  
});

注意div.box 之间缺少空格。如果您单独编写它们,这意味着您正在寻找所有具有box 类的元素,它们是div 的子元素,而没有空格它会找到所有具有box 类的div

【讨论】:

  • 谢谢。好点子,虽然我认为下面的 Josh 已经破解了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
相关资源
最近更新 更多