@author songfeng
因为JS内对象的方法实际上是存储语句的一个类似于指针的东西. 其指向了内存的一个位置, 也就是其函数的位置,当然也可以让其指向一个变量值.
var foo = new Object();
foo.bar = function() {} //现在foo.bar就是指向了这个函数的内存位置.
foo.bar = "abcdefg"; //现在其指向了内存中的字符串
也就是说它们的名子是一样的, 第二个会把第一个覆盖掉, 并不会有任何提示.
下面是我今天遇到的问题.
<form action="" name="applyForm" namemethod="post">
<input type="text" name="foo" value="" />
<input type="button" id="submit" onClick="apply();" name="submit"/> //注意它的name
</form>
<script>
function apply()
{
document.applyForm.submit();
}
</script>
apply()就是无法提交, 总是告诉我submit()不是方法, 可是明明其就是一个方法. 后来仔细检查(因为源代码比这长很多), 才找出问题所在. 原来是input表单的name值是submit, 它理所当然的成了此FORM 的属性值.自然就把以前的顶替了. 改后, 则正常运行.
因为JS内对象的方法实际上是存储语句的一个类似于指针的东西. 其指向了内存的一个位置, 也就是其函数的位置,当然也可以让其指向一个变量值.
var foo = new Object();
foo.bar = function() {} //现在foo.bar就是指向了这个函数的内存位置.
foo.bar = "abcdefg"; //现在其指向了内存中的字符串
也就是说它们的名子是一样的, 第二个会把第一个覆盖掉, 并不会有任何提示.
下面是我今天遇到的问题.
<form action="" name="applyForm" namemethod="post">
<input type="text" name="foo" value="" />
<input type="button" id="submit" onClick="apply();" name="submit"/> //注意它的name
</form>
<script>
function apply()
{
document.applyForm.submit();
}
</script>
apply()就是无法提交, 总是告诉我submit()不是方法, 可是明明其就是一个方法. 后来仔细检查(因为源代码比这长很多), 才找出问题所在. 原来是input表单的name值是submit, 它理所当然的成了此FORM 的属性值.自然就把以前的顶替了. 改后, 则正常运行.