IE7在javascript中抱怨标签ID

时间:2009-07-29 16:51:43

标签: 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>

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

非常感谢任何帮助

编辑:每个请求的checkname功能

该方法调用loadXMLDoc,它创建xmlhttprequest对象,分析使用ActiveX的旧IE和具有本机的现代浏览器的构造。它还创建了一种观察状态更改的方法,如果成功完成,则会使用checkName('',results)调用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);
      }
    }

2 个答案:

答案 0 :(得分:6)

在你的JavaScript“checkName(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>

答案 1 :(得分:2)

“text1”是输入的id,但是你没有声明JavaScript中的text1变量是指那个。

也许这对你有用:

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

它使用document.getElementById在尝试查找其值之前检索输入。