2010-01-04 50 views
2

我需要dynamicaly变化CSS和我做的是通过看innerHTML的IE浏览器无法与附加内容,但阅读

<div id="page_title">Homepage</div> -> this element 

我检查它的innerHTML如果标题页面上的话,如果页面改变风格名称是关于改变CSS这个和那个等等。

现在这个工作在ff但不是在IE7,这是什么工作在这个?
我在谷歌上发现了一些链接,但没有100%的工作和准确。我可以得到一些关于如何做到这一点的建议吗?

+0

也许你应该使用类名来代替嗅探innerHTML?如果您可以在div内打印主页文本,您应该能够打印'

Homepage
'。 – 2010-01-04 12:18:35

+0

如果您将基于class或id而不是innerHTML来做同样的事情会更好。 – 2010-01-04 12:47:12

回答

1
var page_title=document.getElementById("page_title"); 

if(/homepage/i.test(page_title.innerHTML)) 
    page_title.className="thisone"; 
else if(/about/i.test(page_title.innerHTML)) 
    page_title.className="thatone"; 

如果你的代码看起来像这样,如果它不起作用,问题可能出现在CSS本身。

+0

它工作在FF但它不工作在IE 7 – 2010-01-04 11:55:42

+0

你可以发布你的CSS,你的javacsript代码为此目的或任何在线网址来测试?几乎所有体面的PC浏览器上的.className应该都可以。我认为问题出现在CSS中,或者在它到达该部分之前javascript失败。 – YOU 2010-01-04 12:20:47

0

以下代码适用于我的IE7,如果DIV的内容是主页,则主体的背景变成蓝色。另外绿色:

<html> 
<head> 
    <title></title> 
</head> 
<body> 
<div id="page_title">Homepage</div> 
<script> 
    if (document.getElementById('page_title').innerHTML === 'Homepage') { 
     document.body.style.background = '#DEF';//blue 
    } else { 
     document.body.style.background = '#DFE';//green 
    } 
</script> 
</body> 
</html> 

可能在这里给出你的非工作代码的一个例子。

0

也许你的div里有空白或不可见的字符,导致比较失败。

您可以尝试使用this one等函数修剪innerHTML并比较结果吗?

0

感谢您的回答我已经通过使用而不是div,h1元素来解决问题,并且我没有使用innerHTML,而是使用title来获得它的值。谢谢