【问题标题】:Uncaught TypeError: object is not a function未捕获的类型错误:对象不是函数
【发布时间】:2014-06-20 10:52:50
【问题描述】:

我是 javascript 新手,我在网上搜索过这个问题。这可能是一个简单的修复,但我就是无法摆脱这个错误(仅在 chrome 中,而不是 FF)。

这是我的 javascript:

<script>
    function clikked(){
        window.alert("sometext");
    }
</script>

在我的 html 中有很多这样的 DIV:

....
<div class="tiles2" id="1180" name="1180" onclick="clikked()"></div>
<div class="tiles2" id="1181" name="1180" onclick="clikked()"></div>
....

我在这里做错了什么?我总是在 chrome 中遇到该错误...请记住,我是 javascript 新手,所以每个信息都会有所帮助!

编辑:这是 php 部分

for ($i = 0; $i<2000; $i++) {
    echo '<div class="tiles2" id="'.$i.'" name="'.$i.'" onClick="clikked()" ></div>';
}   

编辑 2:这是完整的 Test.php 代码:

<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML>
   <HEAD>
      <TITLE>
         Test
      </TITLE>
   </HEAD>
<BODY>
<style type="text/css">
.tiles2 {
    width: 16px;
    height: 12px;
    float: left;
    background-color: white;
    opacity: 0.9;
}

.tiles2:hover {
    opacity: 0.2;
}
}
</style>


<?php
echo '<div style="width: 800px; height: 480px; background-image: url(australia/austr.png); margin: 0px auto">';

for ($i = 0; $i<20; $i++) {
    echo '<div class="tiles2" id="'.$i.'" name="'.$i.'" onClick="clikked()" ></div>';
}
echo '</div>';
?>

<script>
    function clikked(){
        alert("sometext");
    }
</script>
</BODY>
</HTML>

编辑 3:好的,我已经“解决”了它。我用 xampp 在 localhost 上运行它。当我将它上传到服务器时它可以工作。有人知道为什么吗?

【问题讨论】:

  • 我没有发现您的语法有任何问题,并且它在我的 Chrome 中按预期工作。这个错误什么时候出现?你的html结构是什么?这个 javascript 在哪里,你如何插入它?尝试剥离 html 文件以定位问题,即删除“许多 DIV”并仅保留其中两个。那你还会有这个问题吗?
  • 我刚刚添加了 php 部分。我正在使用 onclick 事件生成 2000 个 div。它不适用于只有一个。我实际上是在尝试将代码插入到 wordpress page.php 文件中。我现在正在尝试仅使用不起作用的代码在独立文件中对其进行测试。很快就会更新。
  • 缓存中的代码是否错误?是否有一个名为 clikked 或 alert 的元素?
  • 我运行了你的代码,它可以在 chrome 中运行 jsfiddle.net/f157vc06
  • 为什么bumped 不断被Community ♦ 获取?

标签: javascript php html google-chrome typeerror


【解决方案1】:

将您的脚本标签放在body 的底部。

或者,使用onLoadonDocumentReady 事件。

<div class="tiles2" id="1180" name="1180" onclick="clikked()"></div>
<div class="tiles2" id="1181" name="1180" onclick="clikked()"></div>
<script type="text/javascript">
    function clikked(){
        window.alert("sometext");
    }
</script>

JSBinhttp://jsbin.com/ronacuka/1/

【讨论】:

  • 我试过了,但还是不行。我在 for 循环中在 php 中生成那些 DIV(最后是 2000 个 div)。在循环之后,我添加了脚本标签。您在 jsbin 中发布的解决方案对我有用。所以,我真的很沮丧,我的仍然无法工作。
【解决方案2】:

使函数像这样:

<script type="text/javascript">
    function clikked(){
        alert("sometext");
    }
</script>

我认为主要问题是您使用的是窗口全局范围。

【讨论】:

  • 我都试过了。在 FF 中效果很好,但在 chrome 中效果不佳 :-(
【解决方案3】:

试试这个。从您的标记中删除 onclick 并将您的 js 放入底部页面:

var i, tiles = document.getElementsByClassName('tiles2');
for(i = tiles.length; i--;) {
    tiles[i].addEventListener("click", clikked, false);
}

function clikked(){
    alert("some text");
}

【讨论】:

    【解决方案4】:

    除非您使用的是 HTML5,否则您的 id 和 name 属性必须以字母开头。

    http://www.w3.org/TR/html4/types.html#type-id

    ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 (" _")、冒号 (":") 和句点 (".")。

    将您的文档类型更改为 并查看是否有效。

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题。我通过简单地重命名被调用的函数和你调用的名称来解决它。

      因此,我的 savData() 被重命名为 savKeyData() 并且我的函数 savData() {} 被重命名为 savKeyData() {} 并且它起作用了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-29
        • 1970-01-01
        相关资源
        最近更新 更多