0

这是我的函数集 css 属性,如 jquery

that.getNode = function() {
    return element;   // element is HTML node
};    


that.css = function(obj) {
    var node = that.getNode(),
        attr;
    if (node && node.style) {
        for (attr in obj) {
            if (obj.hasOwnProperty(attr) && node.style.hasOwnProperty(attr)) {
                node.style[attr] = obj[attr];
            }
        }
    }
    return that;
};

然后我打电话,它在 Chrome 上正常运行,但在 IE9 或 firefox 上无法运行

that.css({
    border: "1px solid black"
});
4

2 回答 2

2

似乎false在某些浏览器中返回以下内容:

node.style.hasOwnProperty(attr)

在这些情况下,属性是从 a 继承的,prototype而不是由( ) 本身拥有的。Objectnode.style

如果您想测试该属性是否存在,无论是拥有还是继承,您可以尝试in操作符

attr in node.style

在上下文中:

that.css = function(obj) {
    var node = that.getNode(),
        attr;
    if (node && node.style) {
        for (attr in obj) {
            if (obj.hasOwnProperty(attr) && attr in node.style) {
                node.style[attr] = obj[attr];
            }
        }
    }
    return that;
};
于 2013-04-29T04:35:07.850 回答
0

手工制作跨浏览器解决方案需要大量工作,我建议使用一些 JavaScript 框架,如JQuery,它会为您完成艰苦的工作。

如果您选择 JQuery,您有一个名为 .CSS 的函数,您可以在 1 行中完成此任务,例如:

你有一个 HTML 元素:

<div id="someID"> Content </div>

正确的?所以你想向这个 DIV 添加一些 CSS 类,你只需要告诉 JQuery 想要选择 HTML DOM 中的哪个节点,并且使用 .CSS 函数你可以设置一些 CSS 属性(和其他东西):

$("#someID").css("SOME-ATTRIbute","SOME-VALUE");

(#someID 是元素的 ID,.CSS 是函数)

简单吧?,使用 JQuery 或任何其他 Javascript 框架来帮助你做一个跨浏览器的应用程序。

PS:对不起我的英语

于 2013-04-29T04:29:39.333 回答