Javascript TypeError:ID不是函数
当我输入表单字段时,底部的输入也应该自动写入与上述字段相同的地址 当我在外部输入时,我使用的JavaScript正在工作,正如您在下面看到的,但我需要在表单中提交它。我在控制台中遇到的错误是“TypeError:autoAddress不是函数”下面的表单可以正常工作Javascript TypeError:ID不是函数,javascript,Javascript,当我输入表单字段时,底部的输入也应该自动写入与上述字段相同的地址 当我在外部输入时,我使用的JavaScript正在工作,正如您在下面看到的,但我需要在表单中提交它。我在控制台中遇到的错误是“TypeError:autoAddress不是函数”下面的表单可以正常工作 <form id="addNews" name="address" action="addevent.php" method="post" class="addStuff" enctype="multipart/form-da
<form id="addNews" name="address" action="addevent.php" method="post" class="addStuff" enctype="multipart/form-data">
<h3>Address1:</h3><input type="text" class="title" name="address1" onkeyup="autoAddress();">
<h3>Address2:</h3><input type="text" class="title" name="address2" onkeyup="autoAddress();">
<h3>City:</h3><input type="text" class="title" name="city" onkeyup="autoAddress();">
<h3>County:</h3><input type="text" class="title" name="county" onkeyup="autoAddress();">
<h3>PostCode:</h3><input type="text" class="title" name="pcode" onkeyup="autoAddress();">
</form>
<input type="text" name="fulladdress" class="title" id="autoAddress" />
地址1:
地址2:
城市:
县:
邮政编码:
我需要的东西不起作用,就在下面。我肯定我只是错过了一些简单的东西。请注意,底部的输入位于表单内部
<form id="addNews" name="address" action="addevent.php" method="post" class="addStuff" enctype="multipart/form-data">
<h3>Address1:</h3><input type="text" class="title" name="address1" onkeyup="autoAddress();">
<h3>Address2:</h3><input type="text" class="title" name="address2" onkeyup="autoAddress();">
<h3>City:</h3><input type="text" class="title" name="city" onkeyup="autoAddress();">
<h3>County:</h3><input type="text" class="title" name="county" onkeyup="autoAddress();">
<h3>PostCode:</h3><input type="text" class="title" name="pcode" onkeyup="autoAddress();">
<input type="text" name="fulladdress" class="title" id="autoAddress" />
</form>
地址1:
地址2:
城市:
县:
邮政编码:
JavaScript如下所示
function autoAddress(){
var address1 = document.address.address1.value;
var address2 = document.address.address2.value;
var city = document.address.city.value;
var county = document.address.county.value;
var postcode = document.address.pcode.value;
var parts = [
address1,
address2,
city,
county,
postcode
];
var address = new Array();
for (var i=0; i<=parts.length; i++){
if (parts[i]){
address.push(parts[i]) ;
}
}
var joined = address.join(', ');
document.getElementById('autoAddress').value = joined;
}
函数自动地址(){
var address1=document.address.address1.value;
var address2=document.address.address2.value;
var city=document.address.city.value;
var country=document.address.country.value;
var postcode=document.address.pcode.value;
变量部分=[
地址1,
地址2,
城市
县
邮政编码
];
var address=新数组();
对于(var i=0;i重命名函数(或
)
什么时候
在表单内部,对于所有
autoAddress
,这里实际上是对具有autoAddress
id的元素的引用。当
在函数外部时,不会发生这种情况(因为
标记的范围,无论放在哪里,都具有更高的优先级)
因此,重命名函数或输入(或将其保留在
之外)。
我自己也有过一次这样的错误,idautoAddress
在DOM中创建了一个对象。更改函数名或id,它就会起作用
<input type="text" name="fulladdress" class="title" id="autoAddress" />
^^^^^^^^^^^^^^^^
function autoAddress(){
^^^^^^^^^^^
^^^^^^^^^^^^^^^^
函数autoAddress(){
^^^^^^^^^^^
这实际上可能是这里的问题所在——一些浏览器倾向于将HTML元素的ID导入全局JavaScript命名空间(Internet Explorer是这里的主要罪犯,但其他浏览器出于兼容性原因采用了相同的行为)。这可能导致在被覆盖之前从加载的JavaScripts中生成实际的JS对象/变量
因此,尝试将HTML元素和JavaScript函数命名为不同的名称。什么是“不起作用”意思是?确保所有其他内容都相同?当我在表单字段中键入时,底部的输入也应自动写入与上述字段相同的地址。如果将函数名更改为元素ID以外的名称,问题是否会消失?是否可以进行一些基本调试?是
document.getElementById('autoAddress')
一个有效的对象?是否创建了joined
对象?是否调用了autoAddress
对象?
<input type="text" name="fulladdress" class="title" id="autoAddress" />
<input type="text" name="fulladdress" class="title" id="autoAddress" />
^^^^^^^^^^^^^^^^
function autoAddress(){
^^^^^^^^^^^