innerHTML在FF中工作但在IE中没有!

Rak*_*yal 1 javascript firefox internet-explorer innerhtml

在我的JSP中,我使用的自定义标记<showDateFormat/>
如下:

Date From:<showDateFormat/>
Run Code Online (Sandbox Code Playgroud)

在我的common.js文件中

function addDateFormatInfo(){
    var dateFormatHolder = document.getElementsByTagName("showDateFormat"); 
    if ( dateFormatHolder ){        
        for ( i = 0 ; i < dateFormatHolder.length; i++ ){
            dateFormatHolder[i].innerHTML = '<div class="infoSmall" ><span>(mm/dd/yyyy)</span></div>';                       
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在我的页面中,只要有showDateFormat标签被使用,它就会显示出来(mm/dd/yyyy).它在FF中工作正常,但在IE中却没有.可能是什么问题呢?

lee*_*ers 5

您需要先告诉IE有关标签的信息.在调用之前在某处添加此行addDateFormatInfo():

document.createElement("showDateFormat");
Run Code Online (Sandbox Code Playgroud)

IE现在将正确初始化元素 - 您可以像处理任何其他元素一样对待它.Firefox会自动执行此操作.

这是源博客文章:

http://ajaxian.com/archives/getting-html-5-styles-in-ie-7

createElement()在IE7中支持启动 - 虽然我在FF3.0.15中工作正常

完整的例子

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Home | My Website</title>
    </head>

    <body>

<script type="text/javascript">

document.createElement("showDateFormat");

function addDateFormatInfo(){
    var dateFormatHolder = document.getElementsByTagName("showDateFormat");     
    if ( dateFormatHolder ){        

        for ( i = 0 ; i < dateFormatHolder.length; i++ ){
                dateFormatHolder[i].innerHTML = '<div class="infoSmall" ><span>(mm/dd/yyyy)</span></div>';                                               
        } 
    }
}

</script>

<div>
Date From:<showDateFormat/>
</div>
<div>
Date From:<showDateFormat/>
</div>

<div>
Date From:<showDateFormat/>
</div>

<div>
Date From:<showDateFormat/>
</div>


<p><input type="button" value="click me" onclick="addDateFormatInfo()" />
</p>

</body>

</html>
Run Code Online (Sandbox Code Playgroud)