this.text函数

时间:2011-12-27 00:01:01

标签: javascript jquery function

我有一个内联函数,工作正常。单击链接后,它会将文本放入textField:

 <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”有关。谢谢你的帮助。

4 个答案:

答案 0 :(得分:2)

为什么不进一步将事件绑定代码放在标记之外呢? Separating your behavior from presentation是一个好主意。

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

我会将id属性应用于您的锚点并在选择器中使用它。或者您可以使用其中一个many other selector来定位您的链接。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您需要传递上下文,否则this将成为全局范围(窗口):

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

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

答案 3 :(得分:0)

this正在丢失。尝试设置setValue()以将元素引用作为第一个参数,然后在处理程序中传递this