2012-11-20 34 views
-2
<ol class="myclass cls"> 
<li class="mylicls"> 
</li> 
</ol> 
在我的CSS

有MyClass的,CLS,mylicls已经定义style.behavior为null或undefined

我会想输出上面的div到

<ol class="myclass cls" style="behavior:url(/path/something.htc)"> 
<li class="mylicls"> 
</li> 
</ol> 

这里是我的javascript

document.getElementsByTagName(ol).style.behavior="url(/path/something.htc)"; 

in Firefox:style.behavior is not defined
in IE:Object is null或undefined

+0

因此,让我们猜测* *可能返回的是什么undefined ..(我猜'getElementsByTagName(ol)'是错误的,我很惊讶它没有生成ReferenceError。) – 2012-11-20 06:30:32

+0

可能。在任何情况下,这个错误表明* call *到'getElements..'返回null/defined。 – 2012-11-20 06:33:19

+0

我仍然没有看到任何OL –

回答

1

getElementsByTagName不会返回一个元素,而是一个元素列表 - 但只有当它找到某个元素时才会返回。因此,您需要添加[0]确保您确实至少找到一个元素。既然你想<ol>标签传递一个字符串'ol'到函数(你忘了引号)。

除此之外,behavior只存在于IE中。因此,在任何其他浏览器中使用它都会失败。显然,这意味着你不应该使用它,除非你需要填充一些IE缺少但其他浏览器已经有的功能。

+1

这没有意义 - 因为它意味着它失败,因为它在FF中运行 - 在上下文中。 – 2012-11-20 06:32:26

+1

啊我明白了。我责怪提问者的低劣措辞。如果人们只是懒得理解减价是如何在换行符上工作的...... – ThiefMaster

4

document.getElementsByTagName(ol)返回null。

您可能指的是document.getElementsByTagName("ol")

但即使如此,你有一个节点列表,而不是单个节点,你将不得不将样式应用到每个节点。

var ols = document.getElementsByTagName("ol"); 
for (var i = 0; i < ols.length; i++) { 
    var el = ols[i]; 
    el.style.behavior = "url(/path/something.htc)"; 
}; 

而且即使这样behaviour非标,并且只适用于IE浏览器,因为据我所知。

+0

谢谢,我实际上想要使用'border-radius.htc'来使用IE的prev版本,但尽管上述代码适用于半径并没有得到任何改变 –

+0

我不知道关于IE行为的一件该死的事情,除了事实上他们只在IE中工作。所以我无法帮助你。 –

相关问题