Javascript Can';无法在IE8上获取标签的innerHTML

Javascript Can';无法在IE8上获取标签的innerHTML,javascript,html,internet-explorer-8,Javascript,Html,Internet Explorer 8,我正在尝试获取类名当前页面项[0]的innerhtml。。。这在FF甚至IE9中都能正常工作。但在IE 8中,“var classelem=document.getElementsByClassName('current\u page\u item')[0].innerHTML;行中似乎出现了一些javascript错误 我试着在上面的一行后面加上提醒,但是它没有显示“你好”的信息 你知道如何解决这个问题吗?是不是IE8中的document.getElementsByClassName不起作用

我正在尝试获取类名当前页面项[0]的innerhtml。。。这在FF甚至IE9中都能正常工作。但在IE 8中,“
var classelem=document.getElementsByClassName('current\u page\u item')[0].innerHTML;
行中似乎出现了一些javascript错误

我试着在上面的一行后面加上提醒,但是它没有显示“你好”的信息

你知道如何解决这个问题吗?是不是IE8中的
document.getElementsByClassName
不起作用

<html>
<head>
<script type="text/javascript">
function updatesidebar()
{
alert("Hello");
var classelem=document.getElementsByClassName('current_page_item')[0].innerHTML;


alert("Hello again");


}
</script>


</head>
<body>
<div id="main">

<div class="menu_main"> 

                      <ul class='mainmenu' id='root'>
<li><a href="/home" class="">Home</a></li>
<li><a href="/solutions" class="">Solutions</a>
</li><li><a href="/services" class="">Services</a></li>
<li><a href="/about-us" class="current_page_item">About Us</a></li>
<li><a href="/news" class="">News and Events</a></li>
<li><a href="/careers" class="">Careers</a></li>
<li><a href="/contact-us" class="">Contact Us</a></li>
</ul>

                </div>


</div>
<script type="text/javascript">
window.onload=updatesidebar();
</script>

</body>
</html>

函数updatesidebar()
{
警惕(“你好”);
var classelem=document.getElementsByClassName('current_page_item')[0].innerHTML;
警惕(“再次你好”);
}
window.onload=updatesidebar();
更改:

window.onload=updatesidebar();
致:


您现在使用的方式将立即调用该函数,而不是在加载页面时调用。

GetElementsByCassName不是JS本机函数,您必须参考包含它的任何库。

GetElementsByCassName
在IE8中不兼容。它是HTML5的一部分。

并非所有浏览器本机都支持
getElementsByClassName
尽管情况正在改善。您可以使用一个函数来检查本机实现并在找到时使用它,或者获取所有元素并检查每个元素的类名,返回匹配元素的数组

function getElementsByClassName( className, context ) {
    //the context is the container we will confine our search to (optional)
    context = context || document;
    //use native implimentation if it exists
    if( context.getElementsByClassName ) {
        return context.getElementsByClassName( className ); //returns a nodeList
    }
    //we have to do it ourselves if we get here
    var candidates = context.getElementsByTagName( '*' );
    var found = [];
    //regular expression to match the classname as per comments
    var rxp = new RegExp( "(?:^|\\s)" + className + "(?:\\s|$)");
    for( var i = 0, l = candidates.length; i < l; i++ ) {
        if( rxp.test( className ) {
            found.push( candidates[i] );
        }
    }
    return found; //returns an array of nodes
}
函数getElementsByCassName(类名,上下文){
//上下文是我们将限制搜索的容器(可选)
上下文=上下文| |文档;
//如果存在,请使用本机实现
if(context.getElementsByClassName){
return context.getElementsByCassName(className);//返回节点列表
}
//如果我们到了这里,就得自己动手
var-candidates=context.getElementsByTagName('*');
发现的var=[];
//根据注释匹配类名的正则表达式
var rxp=new RegExp((?:^ | \\s)“+className+”(?:\\s |$)”;
对于(变量i=0,l=candidates.length;i
您不必更改代码,但如果不存在该函数,您可以添加该函数…;)

if(document.getElementsByClassName!的类型='function'){
document.getElementsByClassName=函数(){
var elms=document.getElementsByTagName('*');
var ei=新数组();

对于(i=0;i它在IE9中运行良好…那么你的意思是说IE8不支持GetElementsByCassName?是的,I8不支持HTML5,所以该方法在IE8中不起作用。你可以将“当前”的id分配给当前页面,并使用getElementById(“当前”);@kjy-这应该是一个答案。@user662503-正确,您需要找到一个为旧浏览器实现它的库。将其更改为window.onload也不起作用…但我不想使用id,因为这些类名是在我的应用程序中动态创建的…将其更改为window.onload=updatesidebar;也不起作用…但我不想使用idnt使用id,因为这些类名是在我的应用程序中动态创建的…–感谢所有人的帮助…:)我如何找到库..任何人都可以提供参考如果你知道的话??在google上粘贴getElementsByClassName有吨它是一个短函数(15行)您可以在自己的文件中包含这样的内容:IE8中是否有该类名的innerHTML???@user是的,您可以使用
getElementsByTagName
,然后对返回元素的类名执行正则表达式或字符串搜索,以检查具有关联名称的类。天哪,这是浪费资源。@Zach Rattner-确实如此,但这就是库在没有替代项时的实现方式。当类名为:`selected´´´´´´´´´notselected´时,注意indexOf是一个糟糕的实现used@LuisSIGE-ReGEX有自己的问题。考虑<代码>一些类名和<代码> CordNeX <代码>匹配<代码>> /\bCalpNe\b/< /Cord>:请考虑这个:来自@ KJY112链接的新的ReXEP(“:(?)^ ^ s)+类名字+ +(?):$ \ $))
function getElementsByClassName( className, context ) {
    //the context is the container we will confine our search to (optional)
    context = context || document;
    //use native implimentation if it exists
    if( context.getElementsByClassName ) {
        return context.getElementsByClassName( className ); //returns a nodeList
    }
    //we have to do it ourselves if we get here
    var candidates = context.getElementsByTagName( '*' );
    var found = [];
    //regular expression to match the classname as per comments
    var rxp = new RegExp( "(?:^|\\s)" + className + "(?:\\s|$)");
    for( var i = 0, l = candidates.length; i < l; i++ ) {
        if( rxp.test( className ) {
            found.push( candidates[i] );
        }
    }
    return found; //returns an array of nodes
}
if (typeof document.getElementsByClassName!='function') {
    document.getElementsByClassName = function() {
        var elms = document.getElementsByTagName('*');
        var ei = new Array();
        for (i=0;i<elms.length;i++) {
            if (elms[i].getAttribute('class')) {
                ecl = elms[i].getAttribute('class').split(' ');
                for (j=0;j<ecl.length;j++) {
                    if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) {
                        ei.push(elms[i]);
                    }
                }
            } else if (elms[i].className) {
                ecl = elms[i].className.split(' ');
                for (j=0;j<ecl.length;j++) {
                    if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) {
                        ei.push(elms[i]);
                    }
                }
            }
        }
        return ei;
    }
}