innerHTML working in FF but not in IE!
In my JSP i am using a custom tag <showDateFormat/>
Date From:<showDateFormat/>
and in my common.js file i am having
function addDateFormatInfo(){
var dateFormatHolder = document.getElementsB开发者_开发知识库yTagName("showDateFormat");
if ( dateFormatHolder ){
for ( i = 0 ; i < dateFormatHolder.length; i++ ){
dateFormatHolder[i].innerHTML = '<div class="infoSmall" ><span>(mm/dd/yyyy)</span></div>';
}
}
}
so in my page wherever there is showDateFormat
tag is used, it will display (mm/dd/yyyy)
. It is working fine in FF, but not in IE. what could be the problem?
You need to tell IE about the tag first. Add this line somewhere before calling addDateFormatInfo()
:
document.createElement("showDateFormat");
IE will now initialize the element correctly - you can treat it just like any other element. Firefox does this automatically.
Here's the source blog post:
http://ajaxian.com/archives/getting-html-5-styles-in-ie-7
Support for createElement()
starts in IE7 - though I works fine in FF3.0.15
Full Example
<!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>
Please take a look about Custom Tags support in Internet Explorer.
Windows Internet Explorer's support for custom tags on an HTML page requires that a namespace be defined for the tag. Otherwise, the custom tag is treated as an unknown tag when the document is parsed
http://msdn.microsoft.com/en-us/library/ms531076(VS.85).aspx
what you need a custom tag for IE, using Namespaces:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:IETag>
and instead of plain:
<showDateFormat/>
use
<IETag:showDateFormat/>
cutom tags are much more powerful especially when bound to HTC behaviors, but unfortunately they are still IE specific, although you can manage to code something using JQUERY for all browsers, read more here: Using custom tags in IE
精彩评论