2012-06-14 108 views
0

我以前用javascript編碼了很多,所以當我盯着幾個小時這樣簡單的東西,並且無法弄清楚爲什麼它不起作用時,這特別令人沮喪。有人能告訴我爲什麼這段代碼完全沒有響應嗎?新手html/Javascript問題。沒有反應

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
var passCode = 0; 

function oneFunc() 
{ 
    passCode = 1; 
} 
function oneFunc() 
{ 
    passCode = 2; 
} 
function oneFunc() 
{ 
    passCode = 3; 
} 
function oneFunc() 
{ 
    passCode = 4; 
} 

if(passCode == 1) 
{ 
    if(passCode == 2) 
    { 
     if(passCode == 3) 
     { 
      if(passCode == 4) 
      { 
       window.location.href = 'frompassCode.html'; 
      } 
     } 
    } 
} 
</script> 
<title> </title> 
</head> 

<body> 

<button onclick="oneFunc()">Button1</button><br/> 
<button onclick="twoFunc()">Button2</button><br/> 
<button onclick="threeFunc()">Button3</button><br/> 
<button onclick="fourFunc()">Button4</button><br/> 

</body> 
</html> 

如果我的邏輯關閉,我可以處理,但它不會做任何事情。我在函數中加入了一個提醒,讓它移動,但沒有任何提示。我敢肯定,這個問題一定很簡單...

+0

這麼多oneFunc's ... –

+2

當一個'oneFunc'不夠時 –

+1

您應該使用調試工具和控制檯來逐步執行代碼(否則您在黑暗中拍攝照片)。 Firebug擁有它。 –

回答

0

除了oneFunc()被多次聲明並且if語句的邏輯永遠不會工作的事實之外,事實上Javascript被線性解釋是一個問題。如果您看代碼:

<script type="text/javascript"> 
var passCode = 0; 

function oneFunc() 
{ 
    passCode = 1; 
} 
function oneFunc() 
{ 
    passCode = 2; 
} 
function oneFunc() 
{ 
    passCode = 3; 
} 
function oneFunc() 
{ 
    passCode = 4; 
} 

if(passCode == 1) 
{ 
    if(passCode == 2) 
    { 
     if(passCode == 3) 
     { 
      if(passCode == 4) 
      { 
       window.location.href = 'frompassCode.html'; 
      } 
     } 
    } 
} 
</script> 

此代碼在HTML文檔加載到瀏覽器中時執行。首先,它將變量passCode設置爲0.然後它通過(可能有問題)聲明所有函數。然後它通過if語句並執行它們,因爲它們不在函數中。任何不在函數中的Javascript代碼都會立即在頁面上線性地執行。這意味着你的if語句永遠不會再被執行。你可以點擊你想要的按鈕,它們顯然會改變passCode的值,但if語句永遠不會再被執行,因爲它們是全局代碼。您可能必須將if語句放在一個新函數中,並且在oneFunc()調用之後始終調用該函數。

+0

我明顯生鏽與我的JavaScript。好的綜合答案。 –

0

你的函數聲明都被命名爲相同的東西。 請試着做這樣的事情:

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
var passCode = 0; 

function oneFuncToRuleThemAll(val) 
{ 
    passCode = val; 


    switch (passCode){ 
    case 1: 
     // Do stuff... 
     break; 
    case 2: 
     // Do other stuff... 
     break; 
    case 3: 
     // You get the idea. 
     break; 
    case 4: 
     window.location.href = 'frompassCode.html'; 
    } 
} 

</script> 
<title> </title> 
</head> 

<body> 

<button onclick="oneFuncToRuleThemAll(1)">Button1</button><br/> 
<button onclick="oneFuncToRuleThemAll(2)">Button2</button><br/> 
<button onclick="oneFuncToRuleThemAll(3)">Button3</button><br/> 
<button onclick="oneFuncToRuleThemAll(4)">Button4</button><br/> 

</body> 
</html> 
+0

大聲笑。我想我以前有不同的功能名稱。可能是複製錯誤。我怎麼想那個? –

3

if語句不應嵌套。如果passCode是1,它不可能是2,那麼如果你已經知道它的1,爲什麼要檢查它?另外,一切都被命名爲onefunc ..他們需要有唯一的名字。

+0

好點。那真是愚蠢,哈哈。 –