Javascript 尝试按名称引用字段时出错
我收到一个错误文档。my_formm.fieldName.value为null或不是来自以下代码的对象:Javascript 尝试按名称引用字段时出错,javascript,Javascript,我收到一个错误文档。my_formm.fieldName.value为null或不是来自以下代码的对象: <html> <head> <title>(Type a title for your page here)</title> <script language=JavaScript> function check_length(my_formm,fieldName) { alert(
<html>
<head>
<title>(Type a title for your page here)</title>
<script language=JavaScript>
function check_length(my_formm,fieldName)
{
alert(fieldName);
alert(document.my_formm.fieldName.value);
}
</script>
</head>
<body>
<form name=my_form method=post>
<input type="text" onChange=check_length("my_form","my_text"); name=my_text rows=4 cols=30 value="">
<br>
<input size=1 value=50 name=text_num> Characters Left
</form>
</body>
</html>
在您的javascript中,您将表单称为“my\u formm”,也就是说,您在表单末尾有一个额外的“m”,这可能是您的问题。只需执行onChange=检查长度即可 在你的功能中
function check_length(element)
{
// element points to the element in question
// element.form points to the form if you need it
alert(element.value);
}
check_length函数使用变量来标识表单和字段名,但是,通过使用点表示法,您指的是名为my_formm的文档元素。使用变量名时,应使用括号表示法:
function check_length(my_formm,fieldName)
{
alert(fieldName);
alert(document[my_formm][fieldName].value);
}
此外,您还应该在输入中引用属性:
<input type="text" onKeyPress="checkCompanyName();" onChange="check_length('my_form', 'my_text');" name="my_text" rows="4" cols="30" value="">
如果JavaScript方法从未使用过第一个参数,为什么它会接受第一个参数?一般来说,最好写下您得到的错误 无论如何,您编写的代码中没有定义checkCompanyName 另外,您将两个字符串作为变量传递,它们没有属性 更好的方法是:
<script type="text/javascript">
function checkLength()
{
inp = document.getElementById("myInput");
len = document.getElementById("len");
len.value = inp.value.length;
}
</script>
<input id="myInput" onkeyup="checkLength()" />
<input id="len" />
评论后编辑:
document.my_formm查找名为my_formm的表单。您需要使用关联数组sintax,如document[my\u formm],它将在运行时传递my\u formm中的值,而不是在名为my\u formm的文档对象中查找不存在的属性。什么错误?到目前为止您尝试了什么?没有定义checkCompanyName?请指定问题所在-“错误”不具体。您确定吗,您想在此处询问一些问题吗?第一个警报显示字段名,但第二个警报显示document.my_formm.fieldName.value为null或不是objects这就是我在check_length方法中将表单名作为参数传递给函数的原因,但您没有引用传递到函数中的变量,因为您已将“document.”放在前面对于my_formm,您也可以将参数作为字符串而不是表单本身传递,您希望删除“document”。并将方法调用更改为onchange=check_lengththis,my_text是否可以通过传递表单名称而不是此来传递?是的,但没有任何必要,因为“this”已经指代了您需要的表单,如果必须为表单提供id而不是名称,那么在函数调用“document.getElementByIDmy_formm”中,我的要求是需要传递表单名称和字段名。。使用它我应该进行验证我的要求是传递表单名和字段名,而不是使用它。。我应该用它来做这件事validation@raja,您可以从元素中获取这些。。。element.form.name和element.name.DOM0访问表单和表单元素的标准方式是:document.forms[my_formm].elements[fieldName]
<script type="text/javascript">
function checkLength(inputname, lenname)
{
inp = document.getElementById(inputname);
len = document.getElementById(lenname);
len.value = inp.value.length;
}
</script>
<input id="myInput" onkeyup="checkLength('myInput', 'len')" />
<input id="len" />