2012-08-02 77 views
1

我有一個從另一個函數調用的javascript函數。每次調用時都不執行Javascript函數

由於某些原因,每次調用時都不執行此函數。我試圖改變函數的名稱,然後一切正常。

我不明白爲什麼。這裏是一個利特爾例如:

javascript 1: 

function a() 
{ 
    b(); 
} 

javascript 2: 

function b() 
{ 
    c(); 
} 

javascript 3: 

function c() 
{ 
    alert("Function c"); 
} 

函數C是因爲某些原因執行...例如,如果函數C將被稱爲NEWC(),然後正常工作。

+1

這三個不同的編譯塊(例如文件)?你在做什麼**實際執行**;這些只是函數的定義,它們如何被調用? – 2012-08-02 08:08:45

+0

你能否提供一個[正在運行的示例](http://sscce.org)以及正確的評論?在你當前的例子中沒有呼叫'a'。 – Zeta 2012-08-02 08:12:34

+0

謝謝你的ansewer @AndrzejDoyle。函數a()在單獨的js文件中,函數b()和c()在同一個js文件中。我實際上是用函數a()執行第一個JavaScript文件,然後該函數將從第二個js文件調用函數b,函數b()將從同一個文件調用函數c()。 – 2012-08-02 08:13:26

回答

3

您可能在b()範圍內存在名稱衝突,即當執行b()時,可能發生c被定義爲當前範圍內的其他內容。

解決方案:啓動您的JavaScript調試器,在b()中設置斷點並檢查當時的c

+0

哦,你說得對@Aaron,我運行了debuger,並且我在js文件b中定義了另一個具有相同名字的函數,所以出現了名稱衝突。愚蠢的錯誤從我身邊。對不起,再次感謝。 – 2012-08-02 08:19:50

1

對我來說它工作正常。可能是你在代碼中有一些錯誤。如果你發佈完整的代碼,我可以幫助。這裏是工作代碼

<html> 
<head> 
<script type="text/javascript"> 
function a() 
{ 
b(); 
} 
function b() 
{ 
c(); 
} 
function c() 
{ 
alert("hello"); 
} 
</script> 
</head> 
<body> 
<form> 
<label>Hello</label> 
<button onclick="a()">v</button> 
</form> 
</body> 
</html> 
+0

謝謝,我找到了解決方案,我定義了函數c兩次,所以有名稱衝突。 – 2012-08-02 08:24:39

相關問題