2009-07-08 11 views
0

JavaScriptでdocument.getElementById()。innerHTMLを使用して、Webページの情報を変更しようとしています。 FireFoxでは、これはW3Cのドキュメントに記載されているように動作しますが、同じメソッドはIEで 'Unknown Error'を返します。 JavaScriptは、次のようになります。document.getElementById()。IEで '不明なエラー'でinnerHTMLが失敗する

function Change_Info (ID, ROW, VALUE) 
{ 
    if (document.getElementById) 
    { 
     var ntext = "<td width=4\% bgcolor=#FFFFFF>&nbsp;</td><td width=92\% bgcolor=#FFFFFF colspan=2><font face=Arial size=2 color=#5578C4>" + VALUE + "</font></td><td width=4\% bgcolor=#FFFFFF><center>&nbsp</center></td>"; 
     document.getElementById(ID + "-" + ROW).innerHTML = ntext; 
     return false; 
    } 
} 
スクリプトは次のようにmouseoverイベントによって呼び出され

onmouseover='Change_Info("thetag","1","Some Info"); 

でIDを兼ね備えするスクリプト - この例でなり、その後、ROW、 、theタグ-1。正確なタグはhtmlドキュメントに存在します。ハードコードされたタグ名でgetElementByIdを使用すると、同じエラーが発生し、この状況では変数メソッドが優先されます。完全なHTMLテーブル情報は、ネストされたID年代は、W3C仕様は明らかに両方のブラウザは完全にW3C仕様implimentedしていない(それが動作するはず述べていても、両方 FirefoxとIEで失敗何らかの理由で、ntext型である理由についての質問に

世話をするように)。誰かがFireFoxとIEの両方で動作するネストされたIDにアクセスして変更する方法を知っているなら、それを知りたいと思うでしょう。

また、innerHTMLを使用している場合、私はこの「不明なエラー」をに変更すると、という情報が得られます。読書は間違いなく行われます。

マウスオーバーイベントでテキスト 'メッセージ'をスワップできるように、誰かが私のスクリプトエラーがどこにあるのかを指摘できますか? ntext型を取り除くためとして

+1

あなたはそれがあなたのためのブラウザの非互換性を抽象化になっているこれを行うにはjQueryを使用してみました –

+0

あなたのHTML。マークアップは古くなっており、償却されたタグとマークアップを使用しています。 – epascarello

答えて

2

IEでは、このようにテーブルの行を追加することはできません。あなたはDOMメソッドremoveChild、appendChild、createElementを使用する必要がありますかOR insertRowとinsertCell

0

、あなたが

のdocument.getElementByIdのような何か行うことができます(ID + ' - ' + ROW)を.getElementsByTagName( 'フォント')[0] .innerHTML = VALUE;

これは動作しないgetElementByIdの部分ですが、あなたはまだ運が悪いです。試してください:

var test = document.getElementById(ID + ' - ' + ROW);

alert(test);

nullエラーでinnerHTMLにアクセスしようとしているためにエラーが発生しているかどうかを調べたり、実際にinnerHTMLを設定していない作業。後者は私の可能性が高いと思われます。この場合、提案された解決策が役立つかもしれません。

0

jQueryにチャンスを与えてください。ブラウザの特質をきれいに抽象化します。 jQueryサイトから最新のjqueryをダウンロードすれば十分です。

<script type="text/javascript" src="path/to/jquery"></script> 


<script type="text/javascript"> 
function Change_Info (ID, ROW, VALUE) 
{ 
    if (document.getElementById) 
    { 
    var ntext = "<td width=4\% bgcolor=#FFFFFF> </td><td width=92\% 
     bgcolor=#FFFFFF colspan=2><font face=Arial size=2 color=#5578C4>"+ VALUE+ 
     "</font></td><td width=4\% bgcolor=#FFFFFF><center>&nbsp</center></td>"; 

    $("#" + ID + "-" + ROW).html(ntext); 

    return false; 
} 
</script> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("# ID OF YOUR ELEMENT").mouseover(function(){ 
       Change_Info("thetag","1","Some Info"); 
     }); 
    }); 
</script> 
1

"また、私はinnerHTMLを使って情報を変更するときにIEでこの 'Unknown Error'しか得られません。 。「

私は同じ問題に直面して、次のように使用:?

var newdiv = document.createElement("div"); 
newdiv.innerHTML = "new content"; 
var container = document.getElementById("container"); 
container.removeChild(container.firstChild); 
container.appendChild(newdiv); 

http://domscripting.com/blog/display/99

関連する問題