2011-07-11 10 views
0

IE 9でこの単純なことが機能しないのはなぜですか?それはちょうどいいFFとクロームで動作します。SCRIPT5007 IE9 getElementsByTagName

<script language="javascript" type="text/javascript"> 
    function displayBusinessCardData() { 
     var xmldata = document.getElementById("xmldata1"); 
     var bizCard = xmldata.getElementsByTagName("BusinessCard")[0]; 

     var name = "Name: " + bizCard.getElementsByTagName("name")[0].firstChild.data; 
     var phone1 = "Phone: " + bizCard.getElementsByTagName("phone")[0].firstChild.data; 
     var phone2 = "Phone: " + bizCard.getElementsByTagName("phone")[1].firstChild.data; 
     var phone3 = "Phone: " + bizCard.getElementsByTagName("phone")[2].firstChild.data; 
     var email = "Email: " + bizCard.getElementsByTagName("email")[0].firstChild.data; 

     alert("BusinessCard Data: \n\n" + name + "\n" + phone1 + "\n" + phone2 + "\n" + phone3 + "\n" + email); 
    } 
</script> 

<xml id="xmldata1" style="display:none"> 
<BusinessCard> 
    <name>Joe Marini</Name> 
    <phone type="mobile">(415) 555-4567</phone> 
    <phone type="work">(800) 555-9876</phone> 
    <phone type="fax">(510) 555-1234</phone> 
    <email>[email protected]</email> 
</BusinessCard> 
</xml> 

<a href="javascript:displayBusinessCardData()">Show Business Card Data</a> 
</body> 

これは "xmldata.getElementsByTagName(" 名刺 ")で失敗[0];"結果はbizCardではnullになります。

答えて

0

IEでは、非標準のタグ名を持つ要素には他の要素を含めることができないと思います。

xmldata.canHaveChildrenを一度お試しください。falseを返す必要があります。

+0

Thx Luc。これはMSの単純なばかげたばかです。それらはXMLデータアイランドを導入したもので、現在はサポートしていません。 – Irina

3

私はこれは少し遅れているけど、私は同様の問題を経験していた、とあなたはdivの中にあなたのXMLコードをラップ検討する必要があり、その後、後のXML文書としてそれを初期化:

<div id="xmldata"> 
    <BusinessCard> 
     <name>Joe Marini</Name> 
     <phone type="mobile">(415) 555-4567</phone> 
     <phone type="work">(800) 555-9876</phone> 
     <phone type="fax">(510) 555-1234</phone> 
     <email>[email protected]</email> 
    </BusinessCard> 
</div> 

関数内でDOMParserオブジェクトを使用してxmlドキュメントを作成します。

function displayBusinessCardData() { 
    var xmlstring= document.getElementById("xmldata").innerHTML; 
    parser=new DOMParser(); 
    var bizCard = parser.parseFromString(xmlstring,"text/xml"); 

    var name = "Name: " + bizCard.getElementsByTagName("name")[0].firstChild.data; 
    var phone1 = "Phone: " + bizCard.getElementsByTagName("phone")[0].firstChild.data; 
    var phone2 = "Phone: " + bizCard.getElementsByTagName("phone")[1].firstChild.data; 
    var phone3 = "Phone: " + bizCard.getElementsByTagName("phone")[2].firstChild.data; 
    var email = "Email: " + bizCard.getElementsByTagName("email")[0].firstChild.data; 

    alert("BusinessCard Data: \n\n" + name + "\n" + phone1 + "\n" + phone2 + "\n" + phone3 + "\n" + email); 
} 

これが役に立ちます。私が得意なのは、文字列から有効なxmlオブジェクトを作ることができるということです。

最後に1つのことは、あなたのAタグでjavascript:function()プロトコルを使用することです。

関連する問題