Получить элемент по идентификатору Javascript - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть список видео и видеоплеер (контейнер Div).Нужно показывать видео в контейнере div при нажатии на ссылку.Видеокоды предоставлены третьей стороной, поэтому я хочу создать условный оператор для проверки того, что нажимается на основе его идентификатора.Но не работает вообще .. Я почти уверен, что какой-то синтаксис отсутствует ... Заранее спасибо

<script type="text/javascript">
function showVideo()
{   

 if(document.getElementById == videoA)
{   
    alert("videoA")
}

 if(document.getElementById == videoB)
{   
    alert("videoB")
}
}
</script>

--------------------
<a href="#" id="vidoeA" onClick="showVideo()">Video A</a>
<a href="#" id="vidoeB" onClick="showVideo()">Video B</a>

Ответы [ 5 ]

3 голосов
/ 05 апреля 2011

Вам необходимо передать значение "this":

<a href="#" id="vidoeA" onClick="showVideo(this)">Video A</a>

или:

<a href="#" id="vidoeA" onClick="showVideo('videoA')">Video A</a>

Затем в обработчике:

function showVideo(anchor) { // assumes you used "this", like the 1st example
  var videoId = anchor.id;
  //
  // ... show the video or whatever ...
  //
}
2 голосов
/ 05 апреля 2011

Вам необходимо вызвать getElementById и передать идентификатор элемента в качестве параметра:

if(document.getElementById("videoA"))

HTML-код, который вы включили, на самом деле имеет ошибочный идентификатор

<a href="#" id="vidoeA" onClick="showVideo()">Video A</a>
<a href="#" id="vidoeB" onClick="showVideo()">Video B</a>

должно быть

<a href="#" id="videoA" onClick="showVideo()">Video A</a>
<a href="#" id="videoB" onClick="showVideo()">Video B</a>

То, как вы структурировали свой код, покажет предупреждение для обоих элементов. Если вы хотите, чтобы щелкнул идентификатор элемента, вы должны получить его из объекта Event и провести сравнение на этой основе.

0 голосов
/ 05 апреля 2011

То, что вы на самом деле хотите, это что-то вроде это :

HTML
Примечание. В вашем вопросе неправильно указаны ваши идентификаторы.

<a href="#" id="videoA" onClick="showVideo(this)">Video A</a>
<a href="#" id="videoB" onClick="showVideo(this)">Video B</a>

JavaScript

function showVideo(elem) {
    if(elem.id == "videoA") {
        alert("videoA")
    }
    if(elem.id == "videoB") {
        alert("videoB")
    }
    //or better yet, just:
    //alert(elem.id);
    return false; //Stops you from following the link.
}
0 голосов
/ 05 апреля 2011

Если это действительно код, который вы используете, он не работает, потому что в нем есть опечатка: ваш HTML объявляет два идентификатора, один с именем vidoeA, а другой с именем vidoeB, тогда как ваш Javascript тестирует на наличиеправильное написание.

(Вы также должны указать имя ID в кавычках в вашем JS).

0 голосов
/ 05 апреля 2011
document.getElementById("videoB")

Вы хотите вызвать функцию getElementById и передать идентификатор в качестве параметра.

Текущий путь возвращает:

document.getElementById
>>function getElementById() { [native code] }

Таким образом, вы фактически сравниваете указатель этой функции с переменной videoA (которая на самом деле не существует в вашем коде).

Однако, судя по вашему приложению, я бы на самом деле прикрепил обработчик onclick, чтобы увидеть, какой из них был нажат.

<a href="#" id="videoA" onClick="videoEvent(this)">Video A</a>

и в вашем javascript:

function videoEvent(videoLink){
  // videoLink is now the ahref element
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...