Javascript - используйте document.getelementbyid (). Value с переменной - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь зафиксировать значение текстового поля в HTML-форме, используя document.getElementById (my_field) .value, где переменная my_field передается моей функции динамически, но ударяет по стене.

Как вы используете переменную в этом контексте?

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

function myFunction() {
    var my_field = arguments[0];
    var current_value = document.getElementById(my_field).value;
    alert ("Current Value: " + current_value);
}

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

Выполнение вышеупомянутого просто делаетничего такого.Предупреждение никогда не появляется, что, как я полагаю, происходит из-за того, что значение current_value никогда не устанавливается.

Чтобы добавить дополнительные подробности, я попытался упростить все для целей этого вопроса, поскольку существует множество других ненужных сложностей, которые только отвлекают от основного.проблема - в моей HTML-форме есть текстовое поле, которое вызывает мою функцию в onChange

onchange="enforce_multiples('quantity[<?php echo $line_id; ?>]',<?php echo $product['minimum'];?>)"

Я проверил, что аргументы [0] и [1] правильно фиксируются путем вывода их значений в предупреждение.Все работает до тех пор, пока я не попытаюсь установить значение amount_entered.

<script>
function enforce_multiples() {

var line_id = arguments[0];
var quantity_increments = arguments[1]; 
var quantity_entered = document.getElementById([line_id]).value;

alert("QE" + quantity_entered);

//var quantity_mod = quantity_entered % quantity_increments;
//var revised_quantity = quantity_entered - quantity_mod;  

//alert("RQ: " + revised_quantity);
//document.getElementById([line_id]).value = revised_quantity; 
}
</script>

Проверил консоль, и я получаю сообщение об ошибке: Uncaught TypeError: Невозможно прочитать свойство 'value' null в строке geElementById

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

ОК, так что я дошел до конца, если кому-то интересно.

Чтобы использовать переменную в document.getElementById (), вы просто добавляете имя переменной без кавычек.

var my_variable = "field1";
document.getElementById(my_variable);

Причина, по которой это не сработало в моей форме, заключалась в том, что в текстовых полях был только параметр имени, а не параметр id.

Так что мне нужно было изменить:

<input type="text" name="field_name" value="1234" />

К

<input type="text" name="field_name" id="field_name" value="1234" />

И это отсортировано.В противном случае я просто получал сообщения об ошибках NULL в консоли.

0 голосов
/ 14 февраля 2019

Вы должны написать document.getElementById(my_field) вместо document.getelementbyid(my_field).

...