2017-03-05 41 views
0

當我按下任意按鈕或在控制檯中鍵入功能時(例如,如果按下Roll!按鈕或在控制檯中鍵入Roll()),我的代碼返回「未定義」。我不認爲HTML有什麼關係,但它可能會,所以我把它放在這裏是我的代碼:爲什麼函數返回沒有定義?

<!DOCTYPE html> 
<html> 
<head> 
<style> 
.dropbtn { 
    color: black; 
    padding: 4px; 
    font-size: 16px; 
    border: none; 
    cursor: pointer; 
    min-width: 160px; 
} 

.dropbtn:hover, .dropbtn:focus { 
    background-color: gray; 
} 

.dropdown { 
    position: relative; 
    display: inline-block; 
} 

.dropdown-content { 
    display: none; 
    position: absolute; 
    background-color: #ffffff; 
    min-width: 160px; 
    overflow: auto; 
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); 
    z-index: 1; 
} 

.dropdown-content a { 
    color: black; 
    padding: 12px 16px; 
    text-decoration: none; 
    display: block; 
} 

.dropdown a:hover {background-color: #f1f1f1} 

.show {display:block;} 
</style> 
</head> 
<body> 
<img id="Dice1" src="White.png"></img> 
<img id="Dice2" src="White.png"></img> 
<img id="Dice3" src="White.png"></img> 
<p></p> 
<div class="dropdown"> 
<button onclick="Dropdown()" class="dropbtn">Number of Dice</button> 
    <div id="myDropdown" class="dropdown-content"> 
    <button class="dropbtn" onclick="DiceNum(1)">1 Dice</button> 
    <button class="dropbtn" onclick="DiceNum(2)">2 Die</button> 
    <button class="dropbtn" onclick="DiceNum(3)">3 Die</button> 
    </div> 
</div> 
<p></p> 
<button class="dropbtn" onclick="Roll()">Roll!</button> 
<script> 
    var Dice = 1; 
    function Dropdown() { 
     document.getElementById("myDropdown").classList.toggle("show"); 
    } 
    var openDropdown 
    window.onclick = function(event) { 
     if (!event.target.matches(".dropbtn")) { 
      var dropdowns = document.getElementsByClassName("dropdown-content"); 
      var i; 
      for (i = 0; i < dropdowns.length; i += 1) { 
       openDropdown = dropdowns[i]; 
       if (openDropdown.classList.contains("show")) { 
        openDropdown.classList.remove("show"); 
       } 
      } 
     } 
    } 
    var randNum1 = Math.floor((Math.random() * 6) + 1); 
    var randNum2 = Math.floor((Math.random() * 6) + 1); 
    var randNum3 = Math.floor((Math.random() * 6) + 1); 
    function Roll() { 
     if(Dice===1) { 
      randNum1 = Math.floor((Math.random() * 6) + 1); 
      document.getElementById("Dice1").src = "Dice"+randNum1+".png"; 
      document.getElementById("Dice2").src = "White.png"; 
      document.getElementById("Dice3").src = "White.png"; 
     } else if(Dice===2) { 
      randNum1 = Math.floor((Math.random() * 6) + 1); 
      randNum2 = Math.floor((Math.random() * 6) + 1); 
      document.getElementById("Dice1").src = "Dice"+randNum1+".png"; 
      document.getElementById("Dice2").src = "Dice"+randNum2+".png"; 
      document.getElementById("Dice3").src = "White.png"; 
     } else if(Dice===3) { 
      randNum1 = Math.floor((Math.random() * 6) + 1); 
      randNum2 = Math.floor((Math.random() * 6) + 1); 
      randNum3 = Math.floor((Math.random() * 6) + 1); 
      document.getElementById("Dice1").src = "Dice"+randNum1+".png"; 
      document.getElementById("Dice2").src = "Dice"+randNum2+".png"; 
      document.getElementById("Dice3").src = "Dice"+randNum3+".png"; 
     } 
    } 

    var DiceNum = function (x) { 
    if(x===1) { 
      return var Dice = 1; 
     } else if(x===2) { 
      return var Dice = 2; 
     } else if(x===3) { 
      return var Dice = 3; 
     } 
    } 
</script> 
</body> 
</html> 
+0

將腳本放在頭部分 – CaptainHere

+1

他爲什麼要這樣做?在關閉正文標記之前使用腳本是最常見的做法。 –

回答

1

您不能return變量賦值。相反,這樣做

var DiceNum = function(x) { 
    if (x === 1) { 
     Dice = 1; 
    } else if (x === 2) { 
     Dice = 2; 
    } else if (x === 3) { 
     Dice = 3; 
    } 
} 
0

。在你的DiceNum功能的錯誤:

var DiceNum = function (x) { 
    if(x===1) { 
    return var Dice = 1; 
    } else if(x===2) { 
    return var Dice = 2; 
    } else if(x===3) { 
    return var Dice = 3; 
    } 
} 

return var Dice = 1是不正確的語法在Javascript中,嘗試將其更改爲return Dice = 1(在其他地方也改變它)

我希望這可以幫助!

0

不能聲明變量很多次你的函數應該是這樣的:

var DiceNum = function (x) { 

if(x===1) { 
     return Dice = 1; 
    } else if(x===2) { 
     return Dice = 2; 
    } else if(x===3) { 
     return Dice = 3; 
    } 
} 
0

DiceNum()將返回「VAR骰子= 1」試用評論,看看它是否運行也 嘗試定義作爲var Roll = function(){...類似於DiceNum

相關問題