2013-02-22 14 views
-2

Прошу прощения, я новичок в javascript.как передать документ.getElementById («someid») при событии click

Я хочу передать селектор идентификатора в качестве параметра на событие щелчка следующим образом:

я пытался:

<button onclick="mycustomfunction(document.getElementById('someTextId'))"/> 

и с помощью JQuery:

<button onclick="mycustomfunction($('#someTextId').val())"/> 


mycustomfunction(control) 
{ 
// do something with the control 
} 

может кто-то пожалуйста, помогите мне понять, куда я иду не так?

+0

Почему бы просто не получить идентификатор внутри функции? – jchapa

+0

Зачем вам нужно передать это значение функции, когда ее можно так же легко оценить в функции, поскольку значение не коррелирует с фактически нажатым элементом? –

+0

Вы передаете элемент не ID, также вам не хватает ключевого слова 'function'. – undefined

ответ

1

сделать document.getElementById() вызов внутри функции обработчика событий и передать строку идентификатора

<button onclick="mycustomfunction('someTextId')"/> 

function mycustomfunction(controlId) { 
    var control = document.getElementById(controlId); 

    // now work with control 
} 
1

<button onclick="mycustomfunction($('#someTextId').val())"/> - это будет передавать значение. Вы получите строку.

<button onclick="mycustomfunction(document.getElementById('someTextId'))"/> - это передаст объекту почтение к элементу DOM. Отсюда вы можете:

mycustomfunction(element) { 
    alert(element.value) 
} 
+0

Выполняется во время фактического события, а не загрузки страницы. –

1

Ценность, которую вы пытаетесь получить, не имеет ничего общего с нажатой кнопкой. Просто удалите эту ссылку с помощью кнопки в целом и сделать так:

<button onclick="mycustomfunction()"/> 
<script> 
function myscustomfunction() { 
    var val = $('#someTextId').val(); // must be an input field for val() to work otherwise use html() or text() 
    // do other stuff 
} 
</script> 

Или, если вы действительно хотите, чтобы сделать его более JQuery дружественный:

<button id="cool_button" /> 
<script> 
$('#cool_button').click(function() { 
    var val = $('#someTextId').val(); // must be an input field for val() to work otherwise use html() or text() 
    // do other stuff 
}); 
</script> 

Вы увидите, что одна из хороших вещей о JQuery , когда все сделано правильно, это то, что вы можете начать удаление логики обработчика событий из структуры HTML.

+0

Я на самом деле вызываю это в цикле for, поэтому параметр имеет индекс, поэтому я должен использовать эту технику –

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