我有一个内联函数,工作正常。单击链接后,它会将文本放入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”有关。谢谢你的帮助。
答案 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
。