找出元素是否具有声明的值

时间:2014-07-10 02:37:16

标签: javascript css dom stylesheet detection

我想在模块中添加一个方法(想想网络组件),检测是否已将高度设置为其根元素,如果没有,则根据其他因素计算其高度。

这个模块有一些绝对的定位和其他的幻想'事情如此正常的流动是不可能的。

我在考虑循环遍历document.styleSheets并检查每个selectorText的{​​{1}}中根元素的ID或类,然后解析cssRule或寻找一个非空的密钥' height'在cssText对象内。

有没有更好(或标准)的方法呢?

PS - 我可能在制定问题时解决了这个问题,所以如果你遇到同样的问题 - 这就是你去!

1 个答案:

答案 0 :(得分:0)

这是一个相当粗略的实现:

isHeightSet: function () {
    var id = this.elements.root.id,
        _isHeightSet = false; // the crude part ;-)

    // go through stylesheets
    _.each(document.styleSheets, function(styleSheet) {

        // go through rules
        _.each(styleSheet.cssRules, function(cssRule) {

            // if selectorText contains our id
            if (cssRule.selectorText && cssRule.selectorText.indexOf(id) !== -1) {

                // check if the height is set
                if (cssRule.style.height && 
                   (cssRule.style.height !== 'auto' && 
                    cssRule.style.height !== 'inherit')) {

                    // keep on hacking!
                    _isHeightSet = true;
                }
            }
        });
    });

    return _isHeightSet;
}

可能更强大,但似乎工作正常。