2012-07-23 77 views
-3

我有2個問題「this」在JS中返回什麼?

  1. 什麼this指什麼?我知道它是某種對象的容器。

  2. 我試圖使用形式變量傳遞由於缺乏更好的選擇。我的想法是有<a onclick>並在onclick,有this.form.submit();

<form action="/justtesting/" method="post"> 
    <a onclick="this.form.submit();" href="">click this</a> 
    <input name="pageid" value="12" type="hidden"> 
    <input name="mid" value="5" type="hidden"> 
</form> 

而且這種方式,我傳遞變量。

我以前見過這個,但是他們使用了一個按鈕,而不是<a>

+1

添加ID,形成和使用:的document.getElementById(「idform」)提交(),你的情況,這是指當前對象,它是「<一」 HTML錨 – 2012-07-23 17:34:52

+2

兩個問題應該是兩個獨立的問題 – 2012-07-23 17:36:38

+0

你的問題被標記爲jquery,但你沒有使用jquery – MrOBrian 2012-07-23 17:37:14

回答

1

「本」沒有任何上下文總是指-window-對象。

var test = 123; 

alert(test); // 123 
alert(this.test); // 123 

你會想要某種類型的jQuery點擊事件,搜索任何值你想傳遞與表單提交。

+0

在onclick =「this.form.submit」的背景下''this''不會引用錨標籤? – 2012-07-23 17:35:44

+1

@KevinB,是的。在沒有上下文的情況下,它指向瀏覽器中的窗口對象 - 不是在其他環境中,它指向該環境的全局對象。 – Lucero 2012-07-23 17:37:13

+0

是啊凱文的權利,對不起,我應該說,我指的是「這個」本身,我的壞! – 2012-07-23 17:42:56

1

這指的是當前元素,在你的情況下,它指的是A標籤

如果你使用<Button type="Submit">click this</Button>那麼將沒有JavaScript的

工作,如果你使用A標籤,那麼請不要離開的href屬性,因爲它可引起問題

<a href="javascript:this.form.submit()">click this</a>

1

直列結合(例如onclickonload屬性鄰內部F側元件),this指元素本身。因此,舉例來說:

<a href="http://google.com" onclick="alert(this.href);">Click me</a> 
<!-- Alerts "http://google.com" --> 

<img src="foo.jpg" width="50" height="50" onload="alert(this.width+'x'+this.height);" /> 
<!-- Alerts "50x50" --> 

所以說this.form你說「搶的形式,這種元素屬於(如有)」,然後你調用表單元素的submit()方法。

0

在正常JavaScript事件,this指該處理程序被綁定到的元素。但是,如果你的活動是與IE attachEvent約束,this指窗口。在你的代碼中,this引用被點擊的錨定標記。下面是如何正確jQuery中實現所需的功能:

傳遞給事件 時
$("a").click(function() { 
    $(this).closest("form").submit(); 
}); 
+0

不,它引用處理程序綁定的元素。而不是在具有'attachEvent'的IE中,'this'指的是'window'。 – 2012-07-23 17:38:43

+0

你說得對,謝謝。編輯。 – jeff 2012-07-23 17:40:01

1

說這句話指的是傳遞給函數的PARAM錨對象。

2

簡短的回答: this指稱爲當前正在執行

長的答案的函數的對象: https://developer.mozilla.org/en/JavaScript/Reference/Operators/this

+0

juan mendes對不起,我下次將分割我的問題,而mrOBrian對包括jquery感到抱歉,但我想它會與它有關。史託亞亞歷克斯和亞歷克斯韋爾感謝我會檢查的答案 – 2012-07-23 18:02:18

1
  1. 在事件處理程序的情況下,「這個」是指於所討論的目標事件

實施例:

<div onclick="console.log(this) id="me">click me</div> 

2。在一個物體的情況下,它是指該對象有關

實施例:

x = { hi: function(){console.log("Hi "+this.name)}}; 
x.name= "Bill"; 
x.hi(); // Hi Bill 

3這兩種行爲可通過調用一個所謂的結合,無論是被改變通過使用綁定,應用或呼叫(綁定在這裏實現)

var bind = function(obj, fn){ return function(){ return fn.apply(obj, arguments)} 
y.name = "Joe"; 
x.hi = bind(y, x.hi); 
x.hi(); //Hi Joe 

4當未指定這樣的,這是指一個全局對象,它等於窗口在瀏覽器中在compatibilit y模式,並在所謂的嚴格模式下未定義。

相關問題