Невозможно получить тип HTML-элемента, используя JavaScript

0

Я хотел знать, как мы можем получить тип элемента с именем тега. Я создаю код в HTML-форме. Существуют все типы элементов ввода HTML (текстовое поле, кнопка, датапикер).

Я хочу, чтобы, если пользователь выберет опцию из раскрывающегося списка, отключите флажки. Но флажок генерируется с использованием цикла PHP, и я также передал id в поле checkbox, поэтому я не могу использовать:

document.getElementsByName('checkbox');

Имя моего флажка - "checkbox", поэтому я попытался использовать:

document.getElementsByTagName('input');

который я отключил флажок, но это заблокировало все элементы ввода на странице. Есть ли решение для этого? Как я могу использовать атрибут type с ним как флажок и отключить флажок:

function  disabler()
{  
     checkboxes = document.getElementsByTagName('input');
     if(checkboxes.type='checkbox')
     {
        for(var i=1, n=checkboxes.length;i<n;i++)
        {
            checkboxes[i].disabled = true;//here i want to disable only the checkbox on page 
        }
 }
}
  • 2
    Пожалуйста, найдите время для удобного форматирования кода при обращении за помощью.
  • 0
    okkk Thnk я буду иметь это в виду
Теги:

3 ответа

3
Лучший ответ

Вы используете оператор присваивания = НЕ сравнение ==. Заменить эту строку

if(checkboxes.type='checkbox')

с

if(checkboxes.type == 'checkbox')

или строгий оператор сравнения === (сравнивается также тип переменной, например, "0" === 0 - false, но "0" == 0 истинно)

if(checkboxes.type === 'checkbox')

Кроме того, вы пытаетесь получить доступ type атрибута коллекции возвращенного getElementsByTagName. Чтобы получить доступ к определенному элементу, обратитесь к checkboxes как это был массив

if(checkboxes[0].type === 'checkbox') //accesses first checkbox element

Чтобы прокручивать все элементы, проверяя их, если это флажок, сделайте это

for(var i=0; i < checkboxes.length; i++)
    {
        if(checkboxes[i].type === 'checkbox') {
            checkboxes[i].disabled = true;
        }
    }

Вот пример скрипки для вас

  • 0
    Вы правы, что = неправильный оператор, но проверка checkboxes.type также неверна в том, что checkboxes - это список ...
  • 0
    Я пытался, если (checkboxes.type === 'checkbox'), но это не сработало ...!
Показать ещё 5 комментариев
2

В JavaScript = оператор присваивания. == и === - операторы равенства (свободные и строгие, соответственно). Так:

if(checkboxes.type=='checkbox')  // Loose, does type conversion (not relevant here)

или

if(checkboxes.type==='checkbox') // Strict, no type conversion (not relevant here)
2

checkboxes - это список узлов, а не один элемент. Вам нужно выполнить проверку на checkboxes[i]:

function  disabler()
{  
    checkboxes = document.getElementsByTagName('input');
        for(var i=1, n=checkboxes.length;i<n;i++)
        {
            if (checkboxes[i].type == 'checkbox') {
                checkboxes[i].disabled = true;
            }
        }
}  

Ещё вопросы

Сообщество Overcoder
Наверх
Меню