我正在尝试使用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]。一切正常,直到我尝试设置quantity_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'
你应该写document.getElementById(my_field)
而不是document.getelementbyid(my_field)
。
好的,所以我深究这个,以防有人感兴趣。
要在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错误消息。