Функция this.text - PullRequest
       3

Функция this.text

2 голосов
/ 27 декабря 2011

У меня есть встроенная функция, которая отлично работает. При нажатии на ссылку текст помещается в текстовое поле:

 <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 ]

2 голосов
/ 27 декабря 2011

Почему бы не сделать еще один шаг и не поставить код привязки события за пределы разметки? Хорошая идея - отделить ваше поведение от представления. .

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

Я бы применил атрибут id к вашей привязке и использовал его в селекторе.Или вы можете использовать один из множества других селекторов для нацеливания на вашу ссылку.

1 голос
/ 27 декабря 2011

Вам необходимо передать контекст, иначе this будет глобальной областью действия (окном):

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

function setValue(context) {
      document.getElementById('dd').value = $(context).text();
}
1 голос
/ 27 декабря 2011
function setValue( text ) {
   jQuery('#dd').val( text );
}
<a href="#" onclick="setValue( jQuery( this ).text() );">someText</a>
0 голосов
/ 27 декабря 2011

this теряется. Попробуйте установить setValue(), чтобы принять ссылку на элемент в качестве первого параметра, а затем передать this в обработчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...