如何从事件监听器增加或减少值

时间:2018-04-16 22:39:38

标签: javascript html events listener

如何通过监听器检查输入数字是增加还是减少?

我看一下整个EVENT,找不到显示输入是增加还是减少的属性或方法。

我知道我可以从event.target.step获得一步,但我需要查看增加值,看它是增加还是减少。

我不想在我的范围中添加新的全局变量。

我的目标是制作一个比率锁定按钮。

enter image description here

enter image description here

这是我的代码:

    dataIntepretor.oninput = function(event){ // click on a input
        console.log('event: ', event);
        const element = event.target;
        const numberPad = event.data;
        const value = element.value;
        const key = element.id;
        const key2 = element.attributes.id2 && element.attributes.id2.value; //array id
        asignSessionValue(session,key,value,key2);
        if(element.attributes.id2){// if is a array props, look for ratioLock
            const lock = document.getElementById(`${key}_lock`).checked;
            if(lock){
                asignSessionValue(session,key,Number(element.step),~~!key2,true);
                //const element2 = document.querySelectorAll(`#${key}`)[~~!key2];
            }
        }
        refresSpriteSession(objSprite,session);
    };
};

2 个答案:

答案 0 :(得分:1)

好吧,您需要创建一个新变量,每次触发事件时都会覆盖其值,如下所示:

var previousValue = 0; // Let's set the initial value to 0

document.getElementById("myInput").oninput = function()
{
    // You can do something at this moment if you want

    if(this.value > previousValue)
    {
        // Value has been increased
    }
    else
    {
        // Value has been decreased
    }

    previousValue = this.value;
}

否则,如果您不想创建全局变量,那么也许您可以在该输入对象上设置您自己的属性,该属性将仅与该输入对象绑定,并且每次触发事件时,而不是更新该全局变量的值,您只需更新该自定义属性的值即可。每当触发事件时,您都可以使用this.propertyNameevent.target.propertyName来引用该属性。让我告诉你如何做到这一点:

var inputField = document.getElementById("myInput");

inputField.previousValue = 0;

inputField.oninput = function()
{
    // You can do something at this moment if you want

    if(this.value > this.previousValue)
    {
        // Value has been increased
    }
    else
    {
        // Value has been decreased
    }

    this.previousValue = this.value;
}

我希望这会对你有所帮助。请在评论中告诉我:))

答案 1 :(得分:1)

您可以在随锁定按钮附加的比率输入上切换readonly属性。在删除之前,用户无法更改只读输入的值。

更新:这是一个活生生的例子:http://jsfiddle.net/0n2Lerae/3/