GVKun编程网logo

JavaScript addEventListener 单击和键码(js按钮单击事件)

1

在这里,我们将给大家分享关于JavaScriptaddEventListener单击和键码的知识,让您更了解js按钮单击事件的本质,同时也会涉及到如何更有效地addEventListener不是函数“

在这里,我们将给大家分享关于JavaScript addEventListener 单击和键码的知识,让您更了解js按钮单击事件的本质,同时也会涉及到如何更有效地addEventListener 不是函数“Javascript”、addEventListener 中的 setTimeout 让应用程序每 100 个 addEventListener 事件休息一下、addEventListener 在 Javascript 中返回 undefined、addEventListener 在独立的 javascript 中,而不是 html 文件的一部分的内容。

本文目录一览:

JavaScript addEventListener 单击和键码(js按钮单击事件)

JavaScript addEventListener 单击和键码(js按钮单击事件)

如何解决JavaScript addEventListener 单击和键码

  • 通过鼠标点击工作。
    • 关键代码不会触发视频停止。
    • 添加 focus() 后的键码有效,但可能会导致一些问题。

我希望键码和鼠标点击一直有效。相互独立,当我按下“空格”按钮时它会点击按钮,当我点击鼠标时它会点击按钮。

let testKey = document.querySelector(".switch-btn");

["click","keypress"].forEach(ev => {
    testKey.addEventListener(ev,function(e) {
        if(ev == "click") {
            console.log("click");
            if(!testKey.classList.contains("slide")) {
                testKey.classList.add("slide");

            } else {

            }

        }
        if(e.keyCode === 32) {
            console.log("click,space");
        }
    });
});
    <button>
      <span>
        Play
      </span>
      <span>
        pause
      </span>
      <span></span>
    </button> 

解决方法

df2 = df.withColumn(''_c49'',lower(col(''_c49''))) 事件已弃用且不再推荐(请参阅 Document: keypress event documentation)。相反,您可以使用 keypress 事件。

如果您打算分别处理 keydownclick 事件,那么您应该检查 keydown 事件处理程序的 detail 属性。如果单击按钮,则该属性的值为 click。 (请参阅 UIEvent.detail 文档)

除非用户使用 Tab 键关注按钮,否则 1 事件不会触发您的处理程序。在容器或文档级别添加处理程序可以解决这个问题。在下面的代码中,我添加了这样一个处理程序,并在按钮的处理程序中调用了 keydown 方法,以防止事件冒泡到文档级别。

stopPropagation
let testKey = document.querySelector(".switch-btn");

document.addEventListener(''keydown'',function(e) {
    if(e.keyCode === 32) {
        console.log("document: space pressed");
        doTheClassListThing();
    }
});

["click","keydown"].forEach(ev => {
    testKey.addEventListener(ev,function(e) {
        if(ev == "click" & e.detail == 1) {
            console.log("click");
            doTheClassListThing();
        }
        if(e.keyCode === 32) {
            e.stopPropagation();
            console.log("Button: space keydown");
            doTheClassListThing();
        }
    });
});

function doTheClassListThing() {
    console.log(''doTheClassListThing() executed'');
    if(!testKey.classList.contains("slide")) {
        testKey.classList.add("slide");
    } else {
    }
}

,

我不确定我是否理解这个问题,但最初没有注册密钥的原因是按钮没有聚焦。您可以尝试调用 testKey.focus() 以确保它最初是专注的。

我不推荐这种方法——将焦点集中在按钮上可能会产生可访问性问题并干扰其他元素交互,但这里有一个片段只是为了演示将焦点放在按钮上如何解决问题。

我同意 Terry 在下面的评论,在 body 上附加事件处理程序会不那么令人担忧。

let testKey = document.querySelector(".switch-btn");

testKey.focus();

["click","keypress"].forEach(ev => {
    testKey.addEventListener(ev,function(e) {
        if(ev == "click") {
            console.log("click");
            if(!testKey.classList.contains("slide")) {
                testKey.classList.add("slide");

            } else {

            }

        }
        if(e.keyCode === 32) {
            console.log("click,space");
        }
        testKey.focus();
    });
});
<button>
      <span>
        Play
      </span>
      <span>
        pause
      </span>
      <span></span>
    </button>

addEventListener 不是函数“Javascript”

addEventListener 不是函数“Javascript”

如何解决addEventListener 不是函数“Javascript”

我的代码是:

var isBackgroundApplied = 0;
var button = document.getElementsByClassName("change");

button.addEventListener("click",function(){
 if(isBackgroundApplied === 0){
     document.querySelector("body").style.color = "blue";
     isBackgroundApplied = 1;
 }else{
    document.querySelector("body").style.color = "white";
    isBackgroundApplied == 0;
 }
});

请帮帮我,代码的任务是在点击时更改背景颜色。

addEventListener 中的 setTimeout 让应用程序每 100 个 addEventListener 事件休息一下

addEventListener 中的 setTimeout 让应用程序每 100 个 addEventListener 事件休息一下

如何解决addEventListener 中的 setTimeout 让应用程序每 100 个 addEventListener 事件休息一下

我有一个 Fitbit 应用程序,想编写 javascript 代码,其中每调用 100 次 addEventListener,我希望应用程序使用 setTimeout 功能休息 10 秒。 10 秒的休息时间将确保 Fitbit OS 不会使应用程序崩溃。到目前为止,我有以下内容,但是在 addEventListener 100 次之后,没有 10 秒的休息时间;问题出在哪里?

var i = 0;

function sendmessage() {
  if (Accelerometer) {

    const accel = new Accelerometer({ frequency: 1 });
    accel.addEventListener("reading",() => {
      setTimeout(function () {
        console.log( `ts: ${accel.timestamp},\\
                      x: ${accel.x},\\
                      y: ${accel.y},\\
                      z: ${accel.z}` );
        i++; 
        console.log(i);                
        if (i%100 == 0) {           
          sendmessage();  
        }
     },10000)  

解决方法

每次调用 sendMessage() 时都会添加一个新的事件侦听器。这很可能是导致性能问题的原因。

要按照您建议的休息时间进行操作,您需要存储对 setTimeout 的引用并检查它是否处于活动状态

类似于:

function sendmessage() {

  let timer = null;

  if (Accelerometer) {

    const accel = new Accelerometer({
      frequency: 1
    });

    accel.addEventListener("reading",() => {
      if (i % 100 == 0 && !timer) {
        // do something with the data here
        
        // then set a timeout
        timer = setTimeout(function() {
         // reset the variable
          timer = null;
        },10000)
      }
    })
  }
}

addEventListener 在 Javascript 中返回 undefined

addEventListener 在 Javascript 中返回 undefined

如何解决addEventListener 在 Javascript 中返回 undefined

我想将 addEventListner 值设置为 int 值,

const stringItem = window.addEventListener("click",(e) => {
  const itemTarget = e.target;
  const itemParent = itemTarget.parentElement.id;
  const strItem = parseInt(itemParent.slice(5));
  console.log(strItem);
  return strItem;
},false);
let currentItem = stringItem;
console.log(currentItem);

stringItem 返回 undefined,但我希望返回 strItem

我想访问 strItem 之外的 addEventListener 值。

我该怎么做?

解决方法

回调函数的返回值被丢弃。返回任何东西都没有意义。 window.addEventListener 不返回任何内容。将结果存储在变量 stringItem 中没有意义。

您可以在函数外部创建一个变量并将值存储在其中:

let value = 0;

document.querySelector(''#button1'').addEventListener("click",(e) => {
  ++value;
},false);
document.querySelector(''#button2'').addEventListener("click",(e) => {
  value = 0;
},false);
document.querySelector(''#button3'').addEventListener("click",(e) => {
  console.log(value);
},false);
<button id="button1">Increment</button>
<button id="button2">Reset</button>
<button id="button3">Show</button>

,

addEventListener 将 undefined 作为函数返回(请参阅 link)。您正在将一个函数传递给 addEventListener,每当您单击窗口时,该函数就会被调用。该函数的返回值将丢失。为了能够在函数之外使用该值,您必须执行以下操作:

let stringItem;

window.addEventListener("click",(e) => {
const itemTarget = e.target;
const itemParent = itemTarget.parentElement.id;
const strItem = parseInt(itemParent.slice(5));
console.log(strItem);
stringItem = strItem;
return strItem;
},false);

您的代码的最后两行将不起作用,因为一旦添加了 eventListener,它们就会被执行。 currentItem 将始终未定义。我建议您阅读有关在 javascript 中使用回调函数的更多信息。

addEventListener 在独立的 javascript 中,而不是 html 文件的一部分

addEventListener 在独立的 javascript 中,而不是 html 文件的一部分

如何解决addEventListener 在独立的 javascript 中,而不是 html 文件的一部分

我有太多关于 javascript 的高级问题。在我进行研究以逐一理解这些时,一些快速提示/见解会很有帮助。

我知道我们可以在 html 文件中的 javascript 中的 DOM 元素上添加 eventListener,但是我有一个问题,即何时将 javascript 作为单独的独立脚本编写而不是 html 的一部分——比如服务器端。

我们也可以在这里添加 eventListener 吗?因为这里我们没有任何 DOM 元素引用。理想情况下,我希望能够执行以下操作:

  1. STATIC_ROOT=os.path.join(VENV_PATH,''static_in_env/'')

然后期望这个程序无限期地运行,每次有人点击键时,都会打印日志。我试过了,它不起作用。我想深入了解这有什么问题,以及是否有任何解决方法可以实现这样的目标。

编辑:用例是我希望 javascript 程序无限期地运行(就像客户端 javascript 的运行方式),并且每次我按下一个键(不输入)时,它都应该登录控制台。我试图理解为什么我们在客户端内部使用 DOM 元素的 html 文件中使用的相同 addEventListener 语法在服务器端不起作用......

解决方法

不,实际上您不能将特定于浏览器的事件侦听器添加到服务器端 javascript(例如 nodejs)。

在服务器端 javascript 中,您可以编写命令行界面 (CLI) 应用程序,您可以在其中监听多个不同的事件,这些事件通常在您编写客户端 javascript 时监听,但当然具有不同的语法和监听器。

今天关于JavaScript addEventListener 单击和键码js按钮单击事件的介绍到此结束,谢谢您的阅读,有关addEventListener 不是函数“Javascript”、addEventListener 中的 setTimeout 让应用程序每 100 个 addEventListener 事件休息一下、addEventListener 在 Javascript 中返回 undefined、addEventListener 在独立的 javascript 中,而不是 html 文件的一部分等更多相关知识的信息可以在本站进行查询。

本文标签:

上一篇将 JavaScript getElementById 转换为 PHP(js getelementsbyid)

下一篇JavaScript 函数返回 null |使用 fetch 获取请求(js return null)