2009-07-29 105 views
0

好的,我正在開發一個簡單的程序來執行xmlhttprequests,以便我可以掌握它們的工作方式。在那個頁面上我有一個簡單的文本框,一個標籤和一個按鈕。點擊按鈕後,它會通過javascript方法向另一個頁面發送請求,並將響應存儲在標籤中。IE7在javascript中抱怨標籤ID

(這是在身體所有的代碼)

<form id="form1" runat="server"> 
     <div> 
      <input type="text" id="text1" value="StuffInTheBox" name="text1"/> 
      <label id="label1">Please Enter Name.</label> 
     </div> 
</form> 
<button id="button1" onclick="checkName(text1.value,'')">BUTTON</button> 

這工作完全在谷歌瀏覽器。但是當它在IE7中試用時,它給了我一個錯誤。它說「錯誤:'text1'未定義」。我一直在努力調整一切,看看它是否有所作爲,但現在我有點失落。

任何幫助,將不勝感激

編輯:檢查名每個請求的功能

的方法調用loadXMLDoc它創建XMLHttpRequest對象,分叉誰使用ActiveX,誰擁有現代化的browers老年人IE建設它原生。它還創建觀看狀態變化的方法,如果它成功地做到了召回檢查名與檢查名(「」,結果)

function checkName(input, response) 
    {   
     if (response != ''){ 
     // Response mode 
     message = document.getElementById('label1'); 
     message.innerHTML = response; 

     }else{ 
     // Input mode 
     loadXMLDoc("http://localhost/xmlTest/Return.aspx","input="+input); 
     } 
    } 
+2

你可以發佈checkName()函數嗎? – Jason 2009-07-29 16:54:07

回答

6

在你的JavaScript「檢查名(text1.value,‘’)」它不清楚text1.value引用的是什麼。你假定它引用了你在HTML中聲明的DOM對象,並且FireFox似乎也做出了這個斷言,但是IE不支持。 text1可以很容易地被引用到之前在JavaScript代碼中聲明的對象。

var text1 = {value: ""}; 

坦率地說,我很驚訝FireFox沒有發出錯誤。

當引用DOM對象(即HTML元素)時,您需要使用document.getElementByIddocument.getElementsByName方法。

下面的例子已經過測試,並在FireFox和IE中都能正常工作,並且我會假設在Chrome,Safari和Opera中也可以工作。

<form id="form1" runat="server"> 
     <div> 
      <input type="text" id="text1" value="StuffInTheBox" name="text1"/> 
      <label id="label1">Please Enter Name.</label> 
     </div> 
</form> 
<button id="button1" onclick="checkName(document.getElementById('text1').value,'')">BUTTON</button> 
2

「text1」是輸入的id,但您尚未聲明JavaScript中的text1變量指向該文本。

也許這會爲你工作:

<button id="button1" onclick="checkName(document.getElementById('text1').value,'')">BUTTON</button> 

它使用的document.getElementById試圖找到它的價值之前檢索輸入。