首页 > 解决方案 > 不能将 onclick() 与嵌套函数一起使用?

问题描述

我正在尝试用onclick()函数替换元素中的图像,但该leaveCave()函数已经嵌套在enterCave()函数中。如果我自己放置嵌套函数,我无法更改leaveCImg.src已经在父函数中声明的函数。

function enterCave() {
    sceneImg.src = 'insideCave.jpg';
    caveImg.src = '';
    enemySpawn()
    updateMessage1.innerHTML = 'Please kill the ' + enemy.name;
    var leaveCImg = document.createElement('img');
    leaveCImg.src = './images/leaveCave.png';
    var leaveC = document.getElementById('leaveCave');
    leaveC.appendChild(leaveCImg);

    function leaveCave() {
        if (isEnemy) {
            update2('The ' + enemy.name + ' wont let you leave!');
        } else {
            sceneImg.src = 'town.jpg';
            caveImg.src = 'cave.jpg';
            leaveCImg.src = '';
        } 
    }
}

标签: javascriptfunctionnestedonclickdom-events

解决方案


我不是 100% 肯定,但我认为你可以把整个东西变成一个类,然后让函数成为方法,并在构造函数或类似的东西中拥有所有变量等,然后你应该能够从您为函数设置的方法中调用或更改这些变量。所以你可以有一个名为“Cave”的类,然后你可以将默认值放在构造函数中,然后创建“enterCave”函数和“leaveCave”函数,然后它们只是操纵这些值。那么我认为你应该也可以使用 onclick() 函数。我希望我在尝试解释这一点时有所了解。祝你好运!


推荐阅读