IE:无法获取属性“clientWidth”的值:对象为空或未定义

Posted

技术标签:

【中文标题】IE:无法获取属性“clientWidth”的值:对象为空或未定义【英文标题】:IE: Unable to get value of the property 'clientWidth': object is null or undefined 【发布时间】:2012-07-24 02:56:24 【问题描述】:

错误信息只显示在 IE 上,但似乎没有解决此问题的方法。

我已经将http-equiv="X-UA-Compatible" 设置为IE8,但仍然无法正常工作。

我想要做的是使用 jQuery 重新加载表格的内容。但似乎 jQuery 重新加载显然无法设置 clientWidth,因为 jQuery 中没有该术语的对应项。

<table style="" id="actionMap" class="top-table">

&lt;table&gt; 的 id 属性用于 DOM,class 用于 jQuery。

j(function() 
        j('#filter_workflows').change(function () 
            var workflow = j(this).val();
            var url = '<spring:url value="/actionMap" />' + '?filter_workflow=' + workflow;
            var savedWidth = document.getElementById("actionMap").clientWidth;
            j('table.top-table').load(url+' table.top-table > *');
            j('input[name=filter_workflow]').val(workflow);
            document.getElementById("actionMap").clientWidth = savedWidth;
        );
    );

原来属性clientWidth 是只读的。

  document.getElementById("actionMap").clientWidth = savedWidth;

永远不会成功。

那么我们如何在jQuery重新加载表格后设置clientWidth属性呢?

谢谢

【问题讨论】:

$(window).width() -- 这规范了 jQuery 中的过程,因为它考虑了不同浏览器中的框模型。 clientHeight/clientWidth returning different values on different browsers的可能重复 @Ohgodwhy 谢谢,但这里我只想设置表格的clientWidth。似乎在重新加载 jQuery 之后从未设置过该参数,所以即使我们设置了 $(#actionMap).width() 的东西,IE 仍然将 clientWidth 识别为 null,然后得到脚本错误。 【参考方案1】:

这有帮助吗?

http://api.jquery.com/width/

clientWidth 可能是特定于客户端的(它可以是特定于客户端的,除 IE 之外的所有东西都支持它...)

jQuery 为这些提供了包装函数,请参阅 http://api.jquery.com/category/dimensions/ 和 http://api.jquery.com/category/offset/

【讨论】:

以上是关于IE:无法获取属性“clientWidth”的值:对象为空或未定义的主要内容,如果未能解决你的问题,请参考以下文章

style="display"之后不能获取offsetHeight或clientWidth这类测量的值

获取窗口属性

IE9 JavaScript 错误:SCRIPT5007:无法获取属性“ui”的值:对象为空或未定义

浏览器可视区大小简说(clientWidth,innerWidth)

js中clientWidth, scrollWidth, innerWidth, outerWidth和offsetWidth属性的区别

如何在 IE9 剥离之前获取样式属性值