2011-12-27 39 views
1

我有一個很好的內聯函數。當點擊該鏈接,它把文本到文本字段:this.text功能

<a href="#" onclick="document.getElementById('textField').value =(this.text);">someText</a> 

我想要做的是能調用上面的函數,而不是內聯寫它的。例如:

function setValue() { 
     document.getElementById('dd').value =(this.text); 
} 

,並可以調用它像這樣:

<a href="#" onclick="setValue();">someText</a> 

我認爲這將是簡單的,但由於某種原因,它不工作,並給我在Firebug的錯誤。我認爲這與從函數調用而不是內聯調用「this.text」有關。謝謝你的幫助。

+0

那麼,是什麼錯誤說?你似乎不知道這一點,但錯誤實際上提供了有關他們自己的有用信息(消息和行號)。 – 2011-12-27 00:49:27

回答

2

爲什麼不把它更進一步,並將事件綁定代碼放在標記之外呢? Separating your behavior from presentation是個不錯的主意。

$("#anchor_selector").click(function() { 
    $("#dd").val(this.text); 
}); 

我會將一個id屬性應用到您的錨點並在選擇器中使用它。或者您可以使用many other selector之一來定位您的鏈接。

0

this正在丟失。嘗試設置setValue()以引用元素作爲第一個參數,然後在處理程序中傳遞this

1
function setValue(text) { 
    jQuery('#dd').val(text); 
} 
<a href="#" onclick="setValue(jQuery(this).text());">someText</a> 
+0

在OP的例子中,'text'沒有被調用(如果它確實是一個函數)。 – alex 2011-12-27 00:06:24

+0

@alex你是對的,編輯根據。 – Matmarbon 2011-12-27 00:07:33

1

你需要傳遞的範圍內,否則this將是全球範圍內(窗口):

<a href="#" onclick="setValue(this);">someText</a> 

function setValue(context) { 
     document.getElementById('dd').value = $(context).text(); 
}