我有一个输入表单,嵌套在div中,定义如下:
<div class="login-input">
<input type="text" name="userId">
</div>
我在下面添加了一个按钮,在该按钮的click事件中,我有这样的代码:
click: function(){
var user = document.getElementsByName(inputTitle)[0].value;
var myRequest = new Request({
url: '/Context/servletName',
method: 'post',
data: {'user': user},
onRequest: function(){
$('container').setStyle('cursor', 'progress');
},
onSuccess: function(responseText){
$('container').setStyle('cursor', 'auto');
window.location = responseText;
},
onFailure: function(){
$('container').setStyle('cursor', 'auto');
}
});
myRequest.send();
}
这在目前为止我测试的所有浏览器(Chrome,FF,Safari)中运行良好,但在IE8中,以下代码行导致了问题:
var user = document.getElementsByName(inputTitle)[0].value;
我在IE开发工具中验证了inputTitle的值为“userId”。问题是
document.getElementsByName(inputTitle)[0];
未定义。
我也做了一些游戏。将其添加到watch会返回看起来像有效对象的内容:
// Returns valid object
document.getElementsByName(inputTitle);
// Returns null
document.getElementsByName(inputTitle).item(0);
document.getElementsByName(inputTitle).value;
一如既往,提前谢谢......
编辑:证明我不疯狂......
答案 0 :(得分:2)
我做了一个快速测试用例来证明代码有效 - http://jsfiddle.net/DmmcE/(在IE8上测试过)。
做一个:
var user = document.getElementsByName('userId')[0];
返回[object HTMLInputElement]
。
这意味着,你传递的inputTitle
没有传递正确的东西。
那就是说,既然你正在使用MooTools,为什么不以MooTools的方式呢:
document.getElement('input[name=userId]').get('value');
答案 1 :(得分:1)
你试过.innerHTML。
希望它有效!
答案 2 :(得分:0)
我建议改用id
和getElementById
。这应该更可靠,更快捷;支持JavaScript的任何内容都应该支持getElementById
。
一些谷歌搜索表明,IE和getElementsByName
真的不能相处得那么好。我通常使用ID属性来引用特定元素,并且很少在原始JavaScript中使用DOM争用,所以我不能说具体是什么错误。
答案 3 :(得分:-4)
尝试使用JQuery来获取元素:
$("input[@name='inputTitle']").click(
这是一个包含更多信息的良好链接 http://jivebay.com/2007/05/30/handling-checkboxes-radio-buttons-and-select-options-in-jquery/