innerHTMLって

XHTMLだとFirefoxじゃ動かないことを知った…。
HTMLだといけるんだけど、なんでだこれ。


例えば

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>innerHTML</title>

<script type="text/javascript">
<!--

function inner(){
	test.innerHTML = "インナー";
}

// -->
</script>

</head>

<body onLoad="inner()">

<p id="test"></p>

</body>
</html>

これだとちゃんと「インナー」って出るけど

<!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>
<title>innerHTML</title>

<script type="text/javascript">
<!--

function inner(){
	test.innerHTML = "インナー";
}

// -->
</script>

</head>

<body onLoad="inner()">

<p id="test"></p>

</body>
</html>

というふうにXHTMLにすると、IEは表示されるけど、Firefoxだとされないわけです。


しょうがないのでdocument.writeでいってみる。

<!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>
<title>innerHTML</title>

<script type="text/javascript">
<!--

function inner(){
	document.write("<p>インナー</p>");
}

// -->
</script>

</head>

<body>

<script type="text/javascript">
	inner();
</script>

</body>
</html>

これだとFirefoxでもいけた。
ブラウザのあれこれとか大変ですこれ。