好的,我正在开发一个简单的程序来执行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);
}
}
答案 0 :(得分:6)
在你的JavaScript“checkName(text1.value,'')”中,不清楚text1.value引用了什么。你假设它引用了你在HTML中声明的DOM对象,而FireFox似乎也做出了断言,但IE没有。 text1可以很容易地引用你之前在JavaScript代码中声明的对象。
var text1 = {value: ""};
坦率地说,我很惊讶FireFox没有抛出错误。
在引用DOM对象(即HTML元素)时,您需要使用document.getElementById或document.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在尝试查找其值之前检索输入。