2015-02-09 5 views
0
window.onload = function(){ 
     var inputElement = document.getElementsByTagName('input'); 
     console.log(inputElement); 
     console.log(inputElement.hasAttribute('placeholder')); 
     if(inputElement.hasAttribute('placeholder')){ 
      console.log('true'); 
     } 
    }; 

Я продолжаю получать TypeError на window.onload. Может кто-то точка, что случилось с этим, я пытаюсь проверить, если входной элемент имеет заполнитель атрибутДоступ к атрибуту заполнителя

+0

Посмотрите поближе: это getElement ** s ** ByTagName - множественное число. – georg

+0

Как и у вас есть * массив * элементов, а не сам элемент. Вам нужно пройти и проверить каждый. –

+0

В принципе дубликат [Почему getElementsByClassName не работает для меня? Что он возвращает?] (Http://stackoverflow.com/questions/10693845/why-getelementsbyclassname-does-not-work-for-me-what-does-it-return) (но это для 'getElementsByTagName' вместо из '... ClassName') – apsillers

ответ

0
document.getElementsByTagName 

возвращает массив или нодлист или любой другие, так что вам нужно получить доступ к его элементам. То, что вы пытаетесь сделать, - это запустить hasAttribute в списке, который, по-видимому, не имеет такой функции.

Что вы хотите

var inputElement = document.getElementsByTagName('input')[0]; 

также, если нет входных элементов это вызовет ошибку, что нет никаких 0 индекса или что-того

+0

В частности, он возвращает [' HTMLCollection'] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection). – Oriol

+0

Да, это был тот, о котором я не мог думать, поэтому я написал что-то вместо этого: D –

+0

yep @php_nub_qq У меня было ощущение, что ему нужно что-то делать с HTMLCollection, спасибо – Raj

0

Если вам действительно нужно собрать все входы и посмотрите на заполнители, проведите через входы, которые вы собрали в inputElement, и проверьте их.

Я хотел бы предложить что-то вроде этого (хотя, я бы также рекомендовать что-то в журнале, чтобы указать, какие входы положительного теста на заполнитель;)):

window.onload = function() { 
    var inputElements = document.getElementsByTagName('input'); 

    for (i = 0; i < inputElements.length; i++) { 
     if (inputElements[i].hasAttribute('placeholder')) { 
      console.log('true'); 
     } 
    } 
}; 

Если вам необходимо получить доступ к конкретному один, тогда вам нужно будет выяснить способ однозначного определения input (например, с атрибутом id). Затем вы можете использовать подход, который вы пытаетесь:

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