簡體   English   中英

Javascript和HTML按鈕不起作用?

[英]Javascript and HTML button not working?

我有一個問題,真的讓我通過綁定。 繼承我的代碼,基本上,第二個按鈕不會調用fightScene(),但是fightScene可以直接從代碼中使用。

我拿出了一些對於尺寸限制都不重要的東西,所以沒有人偷了它......這是我的一個非常新的項目,用它來做學校項目。 任何人都可以告訴我的任何事情都將非常感謝!

<script>
var damage = 10;
var enemyHealth;
var fightText = "You come across a shady looking figure. He pulls his blade and you    pull your weapon.";

function nextThing() {
    x = Math.floor((Math.random() * 4) + 1);

    if (x == 1) {
        woodsWalk();
    }
    if (x == 2) {
        riverWalk();
    }
    if (x == 3) {
        caveWalk();
    }
    if (x == 4) {
        shadyFigure();
    }

    function shadyFigure() {
        document.getElementById("output").innerHTML = fightText;
        document.getElementById("forwardButton").disabled = true;
        document.getElementById("continueButton").style.visibility = "visible";
        enemyHealth = 50;
        fightScene();
    }

    function fightScene() {
        if (enemyHealth > 0) {
            enemyHealth = enemyHealth - 10;
            fightText = fightText + "<br/> You deal " + damage + " damage. <br/> Enemy Health: " + enemyHealth;
            document.getElementById("output").innerHTML = fightText;
        } else {
            document.getElementById("continueButton").style.visibility = "hidden";
            document.getElementById("forwardButton").disabled = false;
            nextThing();
        }
    }
}
</script>

<table border="1" width="80%" align="center">
    <tr>
        <td width="60%">

            <button onclick="nextThing()" id="forwardButton">Forward</button>
            <br/>
            <!--Make an image-->
        </td>
        <td width="20%" valign="top">

            <p id="items">Items:</p>

        </td>
    </tr>
    <tr>
        <td colspan="2">
            <p id="output"></p>
            <button onclick="fightScene()" style="visibility:hidden; float:right" id="continueButton">Continue</button>
        </td>
    </tr>
</table>

與幾乎所有語言一樣,Javascript將函數聲明的內容放在與全局聲明的內容不同的范圍內。 由於fightScene()函數內聲明的nextThing()你只能從函數中訪問它,所以當你去做到這一點:

<button onclick="fightScene()" ... </button>

函數fightScene沒有在那里定義,所以它不會被調用。 事實上,如果你使用你的瀏覽器來查看你的javascript錯誤,你應該看到每次單擊按鈕時都會出現一個新的錯誤,沿着fightScene() is not defined行。

如果你全局定義fightScene() ,你的代碼應該可以正常工作。


如果您想知道,有時候您希望函數全局可見,這就是javascript允許您在其他函數中定義它們的原因。 以這種方式隱藏函數可能會減少您需要閱讀以理解程序的代碼量,因為您可以確保嵌套函數僅在聲明它的函數中定義。 因此,如果在其他任何地方都沒有使用該函數,那么這樣做是個好主意,但在您的程序中並非如此。

PS:正確縮進代碼可以更容易地發現這樣的錯誤。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM