2015-05-28 5 views
1

Я хочу получить позицию метки в событии клика. Для exameple:Как получить позицию из имени класса onclick?

<label class="labelClass" onclick="getPosition()"> label1 </label>//return position 1 
<label class="labelClass" onclick="getPosition()"> label2 </label>//return position 2 
<label class="labelClass" onclick="getPosition()"> label3 </label>//return position 3 ...etc 
<label class="labelClass" onclick="getPosition()"> label4 </label> 
<label class="labelClass" onclick="getPosition()"> label5 </label> 
function getPosition() { 
    //pseudocode to get position 
    var label = document.getElementsByClassName("labelClass"); 
    alert(label.position) //something like this; 
} 
+0

передача 'this' объекта на функции – Afsar

ответ

2

Вы должны преобразовать HTMLCollection к Array, так что вы можете найти индекс элемента из списка. Надеюсь, что это работает для вас ..

<label class="labelClass" onclick="getPosition(this)" > label1 </label>//return position 0 
    <label class="labelClass" onclick="getPosition(this)" > label2 </label>//return position 1 
    <label class="labelClass" onclick="getPosition(this)" > label3 </label>//return position 2 ...etc 
    <label class="labelClass" onclick="getPosition(this)"> label4 </label> 
    <label class="labelClass" onclick="getPosition(this)"> label5 </label> 

    function getPosition(label) 
    { 
     var list=document.getElementsByClassName("labelClass"); 
     list = [].slice.call(list); 

     alert(list.indexOf(label)); 
    } 

Вот jsfiddle

+0

показать предупреждение -1 во всем элементе; ( – tatyana

+0

Проверить jsfiddle. Он работает ... –

+0

Да, я проверил в чистом файле и работает ... Я просмотрел свой html-файл и имел и логическую ошибку. Теперь это работает Спасибо, целует – tatyana

0

попробовать это:

  • изменение OnClick = "GetPosition()" в OnClick = "GetPosition (это)"

  • в функции GetPosition:

    - функция изменения getPosition() для функции getPosition (obj)

    - использовать alert(obj.style.position)

+0

Показать оповещения в черном, но, возможно, работает в чистый файл. В моем html-файле не работает. Я просматриваю файл, чтобы узнать причину. Спасибо и поцелуи. – tatyana

0

Это может быть полезно

function getPosition() 
{ 
var p = $(this); 
var position = p.position(); 
$(".result").text("left: " + position.left + ", top: " + position.top); 

} 
+0

Это jQuery? Я не использую его, но я еще новичок :) – tatyana

+0

Сэр, она спрашивает позицию метки _ в последовательности, а не о позиции элемента на экране ... хотя это также может пригодиться. – Gideon

+0

Да, Гидеон, это был мой вопрос, но мне нравится благодарность за ответ Зохаиб Вакар – tatyana

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