javascript - Onclick 更改按钮的名称和功能

标签 javascript jquery onclick

我一直在论坛中寻找答案,但仍然陷入困境。

我创建了一个按钮,其 onclick 属性指向 stopRotation() 函数。

<button type="button" class="changeText" onclick="stopRotation();">Stop Rotation</button>

点击它后,会发生以下情况:

  1. 应用程序中的地球仪停止旋转(成功)
  2. 按钮上的文字从“停止旋转”更改为“开始旋转”(成功)

这是通过以下代码行实现的:

$(".changeText").click(function () {
    $(this).text(function(i, v){
        return v === 'Start Rotation' ? 'Stop Rotation' : 'Start Rotation'
    })
});

var lastNow = Date.now();

function rotation(clock){
    if(scene.mode == Cesium.SceneMode.SCENE3D){
        var now = Date.now();
        var spinRate = 0.08;
        var delta = (now - lastNow) / 1000;
        lastNow = now;
        scene.camera.rotate(Cesium.Cartesian3.UNIT_Z, -spinRate * delta);
    }
}    

function stopRotation(){
    viewer.clock.onTick.removeEventListener(rotation);
}

现在按钮的文本设置为“开始旋转”,如何调用该函数以便在用户单击按钮后地球仪再次开始旋转?

function startRotation(){
    viewer.clock.onTick.addEventListener(rotation);
}

提前谢谢您。

艾伦

最佳答案

由于您要调用点击监听器和函数,因此我将删除 onclick 调用并将所有逻辑移至您的点击监听器。

$(".changeText").click(function () {
    $(this).text(function(i, v){
        if (v === 'Start Rotation')
           viewer.clock.onTick.addEventListener(rotation);
        else 
           viewer.clock.onTick.removeEventListener(rotation);

        return v === 'Start Rotation' ? 'Stop Rotation' : 'Start Rotation'
    })
});

var lastNow = Date.now();

function rotation(clock){
    if(scene.mode == Cesium.SceneMode.SCENE3D){
        var now = Date.now();
        var spinRate = 0.08;
        var delta = (now - lastNow) / 1000;
        lastNow = now;
        scene.camera.rotate(Cesium.Cartesian3.UNIT_Z, -spinRate * delta);
    }
}    

关于javascript - Onclick 更改按钮的名称和功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35008389/

相关文章:

javascript - 一起使用 onchange() 和 onkeypress() 的问题

java - View.getId() 有效,而 button.getId() 无效

php - Google Analytics 未跟踪出站点击

javascript - 算法和 React - searchFunction

javascript - jquery搜索框和按钮

javascript - 通过ajax发送数组

javascript - 响应式 DIV 覆盖在 "background-size: contain"- 解决警报触发的问题

javascript - JQuery 函数未捕获引用错误

即使没有传递任何内容,JavaScript bool 变量也为 true

javascript - 如何在不包含 React 的情况下发布 React 组件