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

时间:2010-06-09 15:49:05

标签: javascript

我从以下代码中收到错误(document.my_formm.fieldName.value is null or not an object):

<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> 

6 个答案:

答案 0 :(得分:6)

您的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="">

答案 1 :(得分:2)

在您的javascript中,您将表单称为“my_formm”,即您在HTML末尾没有额外的“m”,这可能是您的问题。

答案 2 :(得分:1)

为什么你的JavaScript方法如果从不使用它,那么它会接受第一个参数?

答案 3 :(得分:0)

只需onChange=check_length(this)

并在您的函数中

function check_length(element)
     {
       // element points to the element in question
       // element.form points to the form if you need it
       alert(element.value); 
     }

答案 4 :(得分:0)

一般情况下,写下你会得到什么错误会很好......

无论如何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" />

评论后编辑

<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" />

答案 5 :(得分:0)

document.my_formm会查找名为my_formm的表单。您需要使用关联数组sintax,例如document[my_formm],它将在运行时传递my_formm中的值,而不是在名为{{1}的document对象中查找属性}(不存在)。