分享
三行代码  ›  专栏  ›  技术社区  ›  Moses Kim

javascript if语句布尔比较不起作用

  •  0
  • Moses Kim  · 技术社区  · 1 周前

    var keydownTriggered = false;
    console.log(keydownTriggered);
    document.getElementById('form').addEventListener('keydown', e => {
      setTimeout(function() {
        console.log("Keydown Start Offset", window.getSelection().getRangeAt(0).startOffset);
        console.log("Keydown End Offset", window.getSelection().getRangeAt(0).endOffset);
        keydownTriggered = true;
        console.log(keydownTriggered);
      }, 0);
    })
    document.getElementById('form').addEventListener('keyup', e => {
      keydownTriggered = false;
      console.log(keydownTriggered);
    })
    
    if (!keydownTriggered) {
      document.getElementById('form').addEventListener('click', e => {
        console.log("Click: Keydown Start Offset", window.getSelection().getRangeAt(0).startOffset);
        console.log("Click: Keydown End Offset", window.getSelection().getRangeAt(0).endOffset);
        keydownTriggered = false;
        console.log(keydownTriggered);
      })
    }
    <div id="form" contenteditable="true"></div>

    'click' 'keydown' 'A' 我的意思是,当我按下键的时候 contenteditable 元素 console.log if 不应触发语句。 然而,我得到了这个结果。

    test.html:10 Keydown Start Offset 8
    test.html:11 Keydown End Offset 8
    test.html:13 true
    test.html:23 Click: Keydown Start Offset 8
    test.html:24 Click: Keydown End Offset 8
    test.html:26 false
    test.html:10 Keydown Start Offset 9
    test.html:11 Keydown End Offset 9
    

    keydownTriggered true 但是if语句仍然被触发。

    如果 对帐单 (keydownTriggered == true) , (keydownTriggered === true) 试着把所有的布尔值都改成数字( 1 false 0 )但什么都没有。我做错什么了?

    1 回复  |  直到 1 周前
        1
  •  0
  •   Tingsen Cheng    1 周前

    你应该加上 if statement click event inside ,否则单击时, the click event callback 将一直运行

        document.getElementById('form').addEventListener('click', e => {
            if (!keydownTriggered){
                console.log("Click: Keydown Start Offset", window.getSelection().getRangeAt(0).startOffset);
                console.log("Click: Keydown End Offset", window.getSelection().getRangeAt(0).endOffset);
                keydownTriggered = false;
                console.log(keydownTriggered);
            }
        })