开发者问题收集

Javascript - 使用 document.getelementbyid().value 和变量

2019-02-14
7026

我试图使用 document.getElementById(my_field).value 捕获 HTML 表单上文本字段的值,其中变量 my_field 动态传递给我的函数,但是遇到了障碍。

在这种情况下如何使用变量?

该函数似乎并没有解析变量 my_field 的内容,而是将其视为字符串,无论我使用引号、方括号还是花括号。

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

我这样做是因为表单上有多条记录,每行对于必填字段都有自己唯一的 id。

运行上述命令没有任何作用。警报从未弹出,我猜是因为 current_value 从未设置。

为了添加更多细节 - 我试图简化这个问题的一切,因为还有很多其他不必要的复杂因素只会分散主要问题的注意力 - 在我的 HTML 表单上是一个文本字段,它在 onChange 上调用我的函数

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

我已经检查参数 [0] 和 [1] 是否通过将它们的值输出到警报正确捕获。在我尝试设置 quantile_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:无法读取 geElementById 行上的 null 属性“value”

2个回答

您应该编写 document.getElementById(my_field) ,而不是 document.getelementbyid(my_field)

Damien
2019-02-14

好的,如果有人感兴趣的话,我已经搞清楚了。

为了在 document.getElementById() 中使用变量,只需添加不带引号的变量名称即可。

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

这在我的表单上不起作用的原因是文本字段只有 name 参数而没有 id 参数。

所以我需要更改:

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

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

这样就解决了。否则,我只会在控制台中收到通用的 NULL 错误消息。

rhorne
2019-02-15