innerHTML работает в FF, но не в IE! - PullRequest
1 голос
/ 26 ноября 2009

В моем JSP я использую пользовательский тег <showDateFormat/>
как:

Date From:<showDateFormat/>

и в моем файле 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>';                       
        } 
    }
}

, поэтому на моей странице, где есть тег showDateFormat, будет отображаться (mm/dd/yyyy). Работает нормально в FF, но не в IE. в чем может быть проблема?

Ответы [ 3 ]

5 голосов
/ 26 ноября 2009

Сначала вы должны сообщить IE о теге. Добавьте эту строку куда-нибудь перед вызовом addDateFormatInfo():

document.createElement("showDateFormat");

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>
0 голосов
/ 26 ноября 2009

что вам нужно пользовательский тег для IE, используя пространства имен:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:IETag>

и вместо простого:

<showDateFormat/>

использование

<IETag:showDateFormat/>

теги cutom намного более эффективны, особенно когда они связаны с поведением HTC, но, к сожалению, они все еще специфичны для IE, хотя вы можете написать код с помощью JQUERY для всех браузеров, читайте больше здесь: Использование пользовательских тегов в IE

0 голосов
/ 26 ноября 2009

Ознакомьтесь с поддержкой пользовательских тегов в Internet Explorer.

Поддержка Windows Internet Explorer для пользовательских тегов на странице HTML требует, чтобы пространство имен было определено для тега. В противном случае, пользовательский тег считается неизвестным тегом, когда документ обработан

http://msdn.microsoft.com/en-us/library/ms531076(VS.85).aspx

...