2011-04-13 40 views
0

我有一个输入表单,嵌套一个div中,这样定义得到形式值时入门未定义:试图在IE8

<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]; 

未定义。

我也做了一些玩耍。添加此观看的回报是什么样子的有效对象:

// Returns valid object 
document.getElementsByName(inputTitle); 

// Returns null 
document.getElementsByName(inputTitle).item(0); 
document.getElementsByName(inputTitle).value; 

和往常一样,在此先感谢...

编辑:证明我不是疯了.... Values from IE dev tools debugger JS Error shown in debugger

IE version

+0

这是奇怪的,对我来说getElementsByName( '...')[X ]工作正常,并在IE 8上返回预期的对象。请尝试清除缓存。 – Delta 2011-04-13 05:29:31

+0

感谢所有人的回答!当我回到我的开发机器时,我会试一试。 – Dave 2011-04-13 16:06:37

+0

@Delta - 我附上了开发工具的屏幕截图,显示它无法正常工作。我不知道怎么回事;但@奥斯卡的建议确实奏效,所以我没有抱怨。干杯。 – Dave 2011-04-14 02:32:25

回答

2

我做了一个快速测试案例来证明代码的工作 - http://jsfiddle.net/DmmcE/(在IE8上测试)。

做一个:

var user = document.getElementsByName('userId')[0]; 

返回[object HTMLInputElement]

这意味着,您传递的inputTitle没有传递正确的东西。

这就是说,由于您使用MooTools的,为什么不这样做MooTools的方式:

document.getElement('input[name=userId]').get('value'); 

例子:http://jsfiddle.net/UZTK4/

+0

嘿@Oskar,我将其标记为答案,因为您的MooTools建议是正确的。无论如何,我宁愿这样做。我只是没有想到读取getElement方法 - 所以非常感谢。这就是说,第一行不行。查看我附加的屏幕截图,并注意传入的变量的值为'userId'。 – Dave 2011-04-14 02:27:39

+0

那么,我能做些什么,但张贴截图:http://d.pr/1DRV – 2011-04-14 06:22:37

+0

嘿@Dave你找到一个解决方案..? – knurdy 2012-02-21 19:01:48

1

你试过.innerHTML。

希望它的作品!

+0

嘿@Kyaw,我试了一下,但没有运气。感谢您花时间发布答案。 – Dave 2011-04-14 02:29:26

0

我推荐使用idgetElementById来代替。这应该更可靠和更快;任何支持JavaScript的应该支持getElementById

有点谷歌搜索暗示IE和getElementsByName真的不相处得很好。我通常使用ID属性来指代特定的元素,并且很少在原始JavaScript中用于DOM纠缠,所以我不能说具体是什么错误。