2012-01-26 1 views
6

Я знаю, что это элементарно, но я полностью не могу передать «это» в качестве параметра функции JavaScript. Я оцепенел от попытки ...Как передать ссылку «this» на функцию javascript из тега <a>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script language="javascript" type="text/javascript"> 
    function ko(control.id){ 
    alert(control); 
} 
</script> 

<body> 
<div id"lala"> 
    <a id="la" href="javascript:ko(this)" >Votes & Concerns</a> 
</div> 

</body> 
</html> 

Предупреждение сообщает мне «undefined!».

+0

Что именно вы пытаетесь сделать? Вы хотите, чтобы он предупреждал («Голоса и проблемы»)? В любом случае, вы можете начать с передачи «la» в виде строки, затем getElementByID («la»), чтобы получить тег как объект DOM. – btown

+0

Я пытаюсь использовать иерархию Dom, чтобы обнаружить идентификаторы многих DIV на экране. – DKean

ответ

11
<a id="la" href="#" onclick="ko(this); return false;" >Votes & Concerns</a> 
+0

Ваше решение - единственное, что сработало! Kudos, но в основном спасибо. Но, пожалуйста, скажите мне, что значит «вернуть ложь»; около??? – DKean

+0

Я предполагаю, что функция javascript вернется к вызову, но откуда может вернуться вызов? Я удалил return false; и он все еще работает! Но я новичок ... возможно, я что-то упустил ... – DKean

+3

Для событий вообще, если вы возвращаете false, 'это предотвратит движение по умолчанию по событию. С привязным тегом и событием клика действие по умолчанию состоит в том, чтобы перейти к указанному 'href' - в этом случае ori установил его на« # », чтобы он оставался на текущей странице, но если вы не вернете' false', браузер, как правило, прокручивает назад до верхней части текущей страницы. – nnnnnn

3

Вы получили это неправильный путь вокруг:

function ko(control){ 
    alert(control.id); 
} 

control является объект (объект элемента DOM, чтобы быть точным), что вы передаете с ko(this). Затем вы хотите получить доступ к своему id с control.id.

NB также, что есть намного лучшие способы сделать это. Лучше всего назначить обработчики событий в блоках Javascript, а не в атрибутах HTML. Например:

document.getElementById('la').onclick = function() { 
    alert(this.id); 
}; 
+0

Причина, по которой я делаю это, - это получить идентификатор внешнего DIV. Значение «la» id не может быть известно, но путем проверки. Поэтому я не могу использовать команду getElementById. – DKean

+0

@DennisKean Если это первый 'div' в документе, вы можете использовать' document.getElementsByTagName ('div') [0] .onclick = ... 'Существует почти наверняка решение, позволяющее отделить JS от HTML , – lonesomeday

+0

Это не совсем отдельный, если JS не работает, не зная структуру и/или идентификаторы html. – nnnnnn

4

Не сделать это из значения «HREF», сделать это с помощью атрибута обработчика реального события:

<a id='la' href='#' onclick='ko(event, this)'> 

PASS в event, так что вы можете предотвратить интерпретацию по умолчанию нажмите на <a> от предпринимателя.

function ko(event, element) { 
    if ('preventDefault' in event) event.preventDefault(); 
    event.returnValue = false; // for IE 

    // here "element" will refer to the clicked-on element ... 
} 
+0

Я получаю тот же результат, что и раньше. «Неопределенный!» – DKean

+0

Извините, я продолжу ответ; это действительно должно работать. – Pointy

+0

попробуйте и дайте мне знать, если вы получите другой результат ... – DKean

Смежные вопросы