Использование переменных в JavaScript для динамической ссылки на элементы HTML

0

Я пытаюсь использовать jQuery/javascript для удаления класса из именованного элемента ввода, если отмечен флажок.

У меня есть несколько флажков, каждый со скрытым (на странице) текстовым полем ввода.

Поле ввода и ввода текста называется "question_X" и "question_X_description" соответственно. (где X - число от 0 до 100, скажем)

Поэтому я пытаюсь определить переменную в моем коде, которая определяется как "это имя элемента" + "_ описание", а затем использовать ее для определения подходящего элемента для удаления класса.

Вот что я пробовал:

$('input:checkbox').change(function(){

var x = $(this).attr('name').'_description';

if($(this).is(":checked")) {
    $('input[name="x"]').removeClass("hidden");
} else {
     $('input[name="x"]').addClass("hidden");
}
});

Однако ничего не происходит, если флажок установлен. Правильно ли я ссылаюсь на свою переменную?

Теги:
variables

3 ответа

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

Используйте консоль, она будет иметь сообщения об ошибках.

Первая проблема

var x = $(this).attr('name').'_description';
                           ^^^

Это не то, как вы строите строку в JavaScript. JavaScript не используется . для объединения строк. Он использует +

var x = $(this).attr('name') + '_description';

Второй выпуск

$('input[name="x"]').

Вы не ищете строку, которую вы создали, вы ищете элемент с именем x

Должно быть

$('input[name="' + x + '"]').
  • 0
    Спасибо, добрый человек-викинг: я не очень хорош в javascript :) Спасибо за то, что научил меня, как правильно ссылаться на мои переменные и объединять! Я приму, как только время истечет.
0

Используйте document.getElementById('element_name')

Пример элемента HTML: <input type="text" id="element_name">

0
$('input[name="x"]').removeClass("hidden");

Будем искать:

<input name="x" />

Пытаться

$(name="'+x+'").removeClass("hidden");

Ещё вопросы

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