2014-05-03 156 views
2

我是JavaScript新手,我在網上搜索過這個問題。這可能是一個簡單的修復,但我不能擺脫這個錯誤(只在鉻,而不是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> 
.... 

我在做什麼錯在這裏?我總是得到鉻的錯誤...記住,我是新來的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上運行這個。它工作時,我上傳到服務器。有誰知道爲什麼?

+0

我沒有看到你的語法有什麼問題,它在我的Chrome中按預期工作。這個錯誤何時出現?你的html的結構是什麼?這個javascript位於哪裏,你如何插入?嘗試去除html文件以本地化問題,即刪除「許多DIV」,並留下其中兩個。那麼你還會遇到問題嗎? –

+0

我剛剛添加了php部分。我使用onclick事件生成了2000個div。它不適用於只有一個。實際上我試圖將代碼插入到wordpress page.php文件中。我現在正試圖在獨立文件中測試它,但僅使用不工作的代碼。將盡快更新。 – user3600163

+0

是否是緩存中的錯誤代碼?有沒有名爲clikked或alert的元素? – epascarello

回答

0

將腳本標籤放在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/

+0

我試過了,但它仍然不起作用。我在for循環(最終2000 div)中生成了這些DIV。循環後我添加腳本標記。您在jsbin中發佈的解決方案適用於我。所以,我真的很沮喪,我的工作仍然不行。 – user3600163

-1

使函數像這樣:

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

我認爲主要的問題是,你正在使用的窗口全局範圍。

+0

我試過兩種。在FF中完美地工作,但不在Chrome中:-( – user3600163

0

試試這個。從您的標記的onclick刪除,並在您的js在頁面底部的:

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

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

除非你使用HTML5,你的id和name屬性必須以字母開頭。

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

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

更改您的文檔類型,以<!DOCTYPE HTML >,看看是否可行。

+1

這會如何導致js錯誤? – Huangism

0

我有同樣的問題。我通過重命名被調用的函數和調用的名稱來解決它。

因此,我的savData()被重新命名爲savKeyData(),我的功能savData() {}被重新命名爲savKeyData() {},它工作。

相關問題