Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试按名称引用字段时出错_Javascript - Fatal编程技术网

Javascript 尝试按名称引用字段时出错

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(

我收到一个错误文档。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(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" />