2

我正在尝试Safari(both mobile and desktop)通过Javascript.

这就是我的代码的样子。

(function safaristyles()
{
    if (navigator.userAgent.match(/AppleWebKit/) && ! navigator.userAgent.match(/Chrome/)) {
        var avt = document.getElementsByClassName("avatar");
        avt.style.border = "0" + "px";
        avt.style.padding = "0" + "px";
    }
})(this);

正如我在 中看到的Webkit inspector,这是我面临的错误。

类型问题 - 'undefined' 不是对象(评估 'avt.style.border = "0" + "px")

我是 JS 的初学者,所以请多多包涵。

4

3 回答 3

0

document.getElementsByClassName()返回一组元素。如果你想改变一个类的风格,我看到了两个不错的选择:

  1. 使用新的类样式附加样式标记。
  2. 创建一个循环并更改document.getElementsByClassName()列表中的每个项目。

我建议使用第一种方法,因为它允许您使用该类添加新元素,而无需更改其样式。

于 2013-07-21T06:10:32.817 回答
0

getElementsByClassName 方法只返回与您传入的类名匹配的节点列表,而不是数组。

您可以将此 nodeList 转换为数组并设置单个项目的样式

var avt = Array.prototype.slice.call(avt, 0);

avt[0].style.padding = "0px";
于 2013-07-21T06:15:54.207 回答
0

document.getElementsByClassName("avatar");将返回给您的元素是已找到元素的 HTMLCollection。

因此,如果您只有一件物品,这将起作用

  avt[0].style.border = "0" + "px";
    avt[0].style.padding = "0" + "px";

如果您有多个项目,请使用 for 循环。

这是类似
http://jsfiddle.net/qjreK/1/的简单小提琴

查看这些以获取更多详细信息

https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByClassName

http://www.w3schools.com/htmldom/dom_using.asp

于 2013-07-21T06:05:01.250 回答