2012-02-29 80 views
1

我想要做的是获得与点击下面的提交按钮相同的结果。在JavaScript中获取'this'对象而不使用'this'这个词

<input id="submit_http:" class="add_submit" type="button" onclick="return dex.forms.form_ajax_submit(this,function(res) { alert('posting failed'); },function(res) { alert('posting success'); });" value="Next" name="submit_http:"> 

我试图做这样的:

$('.NextButton').click(function() { 
    dex.forms.form_ajax_submit(document.getElementsByName('submit_http:'), 
     function(res) { 
      alert('posting failed'); 
     }, 
     function(res) { 
      alert('posting success'); 
     }); 
}); 

不过貌似document.getElementsByName没有返回相同的结果 的提交按钮“这个” 我怎样才能解决这个问题?

+4

:使用

要么访问数组的第一个元素:

document.getElementsByName('submit_http:')[0] 

,或者使用已经推荐和更精确的功能'? – 2012-02-29 12:53:46

+0

,因为我不能使用,因为它不会涉及到“提交”按钮,而是“NextButton” – DanR 2012-02-29 12:54:47

+0

你用document.getElementsById检查它吗? – MCSI 2012-02-29 12:55:14

回答

2

你唯一犯的错误是使用函数document.getElementsByName,因为它返回一个元素数组(如复数所示)。你需要的是一个单一的元素。究竟为什么你不希望使用`这个

document.getElementById('submit_http:') 
1

document.getElementsByName('submit_http:')将返回具有该名称的元素数组。如果你想得到你的提交按钮,你想使用document.getElementsByName('submit_http:')[0]

+0

感谢您的快速回答! – DanR 2012-02-29 12:56:21

0

一般来说,我们使用一个“自我”变量。提交之前,这样做:

var self = this; 

然后用“自我”到你的回调

1

虽然安东尼格里斯特是正确的,你的情况,因为你已经有一个输入的id,你可以做document.getElementById('submit_http:') (它返回一个元素)。