Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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 TypeError:ID不是函数_Javascript - Fatal编程技术网

Javascript TypeError:ID不是函数

Javascript TypeError:ID不是函数,javascript,Javascript,当我输入表单字段时,底部的输入也应该自动写入与上述字段相同的地址 当我在外部输入时,我使用的JavaScript正在工作,正如您在下面看到的,但我需要在表单中提交它。我在控制台中遇到的错误是“TypeError:autoAddress不是函数”下面的表单可以正常工作 <form id="addNews" name="address" action="addevent.php" method="post" class="addStuff" enctype="multipart/form-da

当我输入表单字段时,底部的输入也应该自动写入与上述字段相同的地址

当我在外部输入时,我使用的JavaScript正在工作,正如您在下面看到的,但我需要在表单中提交它。我在控制台中遇到的错误是“TypeError:autoAddress不是函数”下面的表单可以正常工作

<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的元素的引用。当
在函数外部时,不会发生这种情况(因为
标记的范围,无论放在哪里,都具有更高的优先级

因此,重命名函数或输入(或将其保留在
之外)。


我自己也有过一次这样的错误,id
autoAddress
在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(){
         ^^^^^^^^^^^