#javascript #jquery
#javascript #jquery
Вопрос:
У меня возникла проблема со скриптом, содержащим строки ниже (верхняя часть закомментирована прямо сейчас). Они находятся в цикле, чтобы выполнить суммирование текстовых полей в форме. Тем не менее, я получаю: ‘Uncaught TypeError: не удается прочитать свойство ‘0’ из undefined’ при выполнении этого. Если я закомментирую нижнюю строку и раскомментирую верхнюю строку, все работает нормально.
Я все еще хочу сохранить функцию replace, и я не уверен, как это сделать.
total = $(this).text();
//difference and why the previous works, but the below returns null, but if
total = ($(this).all[0].value.replace(/D/g, '')) * 1
РЕДАКТИРОВАТЬ: должен был упомянуть, что это было то, что мне нужно было отладить, и обнаружил эту ошибку.
Комментарии:
1. Что такое
.all
? Почему бы простоtotal = ($(this).val().replace(/D/g, '')) * 1
2. Является
$(this)
ли тип ввода текстовым?
Ответ №1:
.text()
возвращает или задает текст внутри элемента.
Например: <p>Hello World</p>
console.log($('p').text())
вернет Hello World
.value()
это не метод jquery, вместо этого используйте .val()
.val()
используется для получения или установки значения поля ввода.
Например <input type="text">
, если вы хотите получить или установить значение ввода, скажем, в форме отправки, вы бы использовали что-то вроде $('input').val()
Комментарии:
1. Это было оно. Отредактировал свой пост слишком рано, но я этого не писал, так что спасибо за помощь!
Ответ №2:
1. .text
не существует как свойство текстового поля. Чтобы получить его значение, используйте val()
(см. 2)
2. Вы смешиваете ванильный JS с вашим jQuery. .value
должно быть .val()
.
3. Что вы пытаетесь сделать с .all
…? Это значение null, на которое ссылается ваша ошибка.
4. Я думаю, это может быть то, что вы хотите:
var total = 0;
$('input[type="text"]').each(function() {
total = ($(this).val().replace(/D/g, '')) * 1
});
alert("Your total is " total);
Пример: JSFiddle
Комментарии:
1. Это было оно. Отредактировал свой пост слишком рано, но я этого не писал, так что спасибо за помощь!