IE7在javascript中抱怨标签ID

Jar*_*red 0 javascript internet-explorer

好的,我正在开发一个简单的程序来执行xmlhttprequests,这样我就可以了解它们的工作原理.在那个页面上,我有一个简单的文本框,一个标签和一个按钮.单击该按钮时,它会通过javascript方法向另一个页面发送请求,并将响应存储在标签中.

(这是正文中的所有代码)

<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>
Run Code Online (Sandbox Code Playgroud)

这在谷歌浏览器中完美运行.但是当它在IE7中尝试时,它给了我一个错误.它说"错误:'text1'未定义".我一直试图调整我所能做的一切,看看它是否有所作为,但现在我有点迷失了.

任何帮助将非常感激

编辑: 每个请求的checkname函数

该方法调用loadXMLDoc,它创建xmlhttprequest对象,分析使用ActiveX的旧IE和具有本机的现代浏览器的构造.它还创建了一种观察状态更改的方法,如果成功完成,则会使用checkName('',结果)调用checkname.

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);
      }
    }
Run Code Online (Sandbox Code Playgroud)

MyI*_*hin 6

在你的JavaScript"checkName(text1.value,'')"中,不清楚text1.value引用了什么.你假设它引用了你在HTML中声明的DOM对象,而FireFox似乎也做出了断言,但IE没有.text1可以很容易地引用前面在JavaScript代码中声明的对象.

var text1 = {value: ""};
Run Code Online (Sandbox Code Playgroud)

坦率地说,我很惊讶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>
Run Code Online (Sandbox Code Playgroud)