GVKun编程网logo

类上的JavaScript click事件监听器(js监听click事件判断)

33

如果您想了解类上的JavaScriptclick事件监听器和js监听click事件判断的知识,那么本篇文章将是您的不二之选。我们将深入剖析类上的JavaScriptclick事件监听器的各个方面,并为

如果您想了解类上的JavaScript click事件监听器js监听click事件判断的知识,那么本篇文章将是您的不二之选。我们将深入剖析类上的JavaScript click事件监听器的各个方面,并为您解答js监听click事件判断的疑在这篇文章中,我们将为您介绍类上的JavaScript click事件监听器的相关知识,同时也会详细的解释js监听click事件判断的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

类上的JavaScript click事件监听器(js监听click事件判断)

类上的JavaScript click事件监听器(js监听click事件判断)

我目前正在尝试编写一些JavaScript,以获取已单击的类的属性。我知道要以正确的方式执行此操作,应该使用事件侦听器。我的代码如下:

var classname = document.getElementsByClassName("classname");var myFunction = function() {    var attribute = this.getAttribute("data-myattribute");    alert(attribute);};classname.addEventListener(''click'', myFunction(), false);

我希望每次单击其中一个类来告诉我该属性时,都会得到一个警告框,但是不幸的是,这不起作用。有人可以帮忙吗?

- 我可以很容易地做到这一点jQuery,但我 喜欢使用它

答案1

小编典典

这应该工作。getElementsByClassName返回与条件相匹配的元素的数组(类似于 数组 )(请参阅编辑)。

var elements = document.getElementsByClassName("classname");var myFunction = function() {    var attribute = this.getAttribute("data-myattribute");    alert(attribute);};for (var i = 0; i < elements.length; i++) {    elements[i].addEventListener(''click'', myFunction, false);}

jQuery为您完成了循环部分,您需要使用纯JavaScript来完成。

如果您有 ES6支持 ,则可以将最后一行替换为:

    Array.from(elements).forEach(function(element) {      element.addEventListener(''click'', myFunction);    });

注意:较旧的浏览器(如IE6,IE7,IE8)不支持getElementsByClassName,因此会返回undefined


编辑:更正

getElementsByClassName不会返回数组,而是返回大多数HTMLCollection或某些浏览器中的NodeList(Mozilla
ref)。这两种类型都是Array-Like,(意味着它们具有length属性,并且可以通过其索引访问对象),但是它们并不是严格意义上的Array或从Array继承。(这意味着不能对这些类型执行在数组上可以执行的其他方法)

Flash对象上的javascript onclick事件

Flash对象上的javascript onclick事件

如何解决Flash对象上的javascript onclick事件?

最好将所有swf都视为z阶无穷大。Flash是最重要的,只有很少的事情可以阻止它。另一方面,如果您可以访问SWF本身的代码,或者可以使用另一个SWF加载当前的SWF,则可以使用几个不同的Flash命令来处理页面的JavaScript。 。(ExternalInterface是您最好的选择)。

//This is what your AS code should look like:
import flash.external.ExternalInterface;
import flash.events.MouseEvent;

root.addEventListener( MouseEvent.CLICK, useExternal, true );

function useExternal( event:MouseEvent):void
{
    //swfClickFunction is defined in JavaScript
    ExternalInterface.call( "swfClickFunction" );
}

下面的达尔文提供了另一个使用onmousedown而不是onclick的替代解决方案。

解决方法

我在一个div内放了一个嵌入式Flash电影,在主div上放了一个javascript onclick事件处理程序,但是没有捕捉到点击,这是怎么回事?

码:

   <div id="top-box-player" onclick="alert(''Hi Bananas!'');">
     <object width="400" height="300">
        <param name="movie" value="general.swf">
        <embed src="./swf/general.swf" width="400" height="300">
        </embed>
     </object>
   </div>

JavaScript onClick事件 – HTML表

JavaScript onClick事件 – HTML表

我正在学习 JavaScript,最近我一直在尝试鼠标事件,试图了解它们的工作原理.
<html>
<head>
    <title>Mouse Events Example</title>
    <script type="text/javascript">
        function handleEvent(oEvent) {
            var oTextBox = document.getElementById("txt1");
            oTextBox.value += "\n" + oEvent.type;

            if(oEvent.type=="click")
            {
            var iScreenX = oEvent.screenX;
            var iScreenY = oEvent.screenY;
            var b = "Clicked at "+iScreenX+","+iScreenY;

            alert(b);
            }
        }
        function handleEvent1(oEvent) {
            // alert("Left Window");
        }
    </script>
</head>
<body>
    <p>Use your mouse to click and double click the red square</p>
    <divonmouSEOver="handleEvent(event)"
        onmouSEOut="handleEvent1(event)"
        onmousedown="handleEvent(event)"
        onmouseup="handleEvent(event)"
        onclick="handleEvent(event)"
        ondblclick="handleEvent(event)" id="div1"></div>
    <p><textarea id="txt1" rows="15" cols="50"></textarea></p>
</body>

这是我一直试图理解的代码.任何人都可以帮我创建一个HTML表格,点击表格的单元格用户被告知单元格,他正在点击?
被困在它的时间,谢谢帮助.

解决方法

var table = document.getElementById("tableID");
if (table != null) {
    for (var i = 0; i < table.rows.length; i++) {
        for (var j = 0; j < table.rows[i].cells.length; j++)
        table.rows[i].cells[j].onclick = function () {
            tableText(this);
        };
    }
}

function tableText(tableCell) {
    alert(tableCell.innerHTML);
}

是你可以做的一个例子. DEMO

javascript – Angular 2路由器事件监听器

javascript – Angular 2路由器事件监听器

如何在Angular 2路由器中监听状态变化?

在Angular 1.x中我使用了这个事件:

$rootScope.$on(''$stateChangeStart'',
    function(event,toState,toParams,fromState,fromParams, options){ ... })

所以,如果我在Angular 2中使用这个eventlistener:

window.addEventListener("hashchange", () => {return console.log(''ok'')}, false);

它不是返回’ok’,然后从JS更改状态,然后才运行浏览器history.back()函数.

使用router.subscribe()函数作为服务:

import {Injectable} from ''angular2/core'';
import {Router} from ''angular2/router'';

@Injectable()
export class SubscribeService {
    constructor (private _router: Router) {
        this._router.subscribe(val => {
            console.info(val, ''<-- subscribe func'');
        })
    }
}

在路由中初始化的组件中注入服务:

import {Component} from ''angular2/core'';
import {Router} from ''angular2/router'';

@Component({
    selector: ''main'',
    templateUrl: ''../templates/main.html'',
    providers: [SubscribeService]
})
export class MainComponent {
    constructor (private subscribeService: SubscribeService) {}
}

我将此服务注入其他组件,例如本例中.然后我改变状态,console.info()在服务中不起作用.

我做错了什么?

解决方法:

新的路由器

constructor(router:Router) {
  router.events.subscribe(event:Event => {
    if(event instanceof NavigationStart) {
    }
    // NavigationEnd
    // NavigationCancel
    // NavigationError
    // RoutesRecognized
  });
}

注入路由器并订阅路由更改事件

import {Router} from ''angular2/router'';

class MyComponent {
  constructor(router:Router) {
    router.subscribe(...)
  }
}

注意

对于新路由器,请不要忘记从路由器模块导入NavigationStart

import { Router, NavigationStart } from ''@angular/router'';

因为如果你不导入它,instanceof将无法工作,并且未定义错误NavigationStart将会上升.

也可以看看

> https://angular.io/docs/ts/latest/api/router/index/Router-class.html
> How to detect a route change in Angular 2?

总结

以上是小编为你收集整理的javascript – Angular 2路由器事件监听器全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

原文地址:https://codeday.me/bug/20190916/1807267.html

javascript – Click事件函数执行两次

javascript – Click事件函数执行两次

我对这段代码的结果感到困惑.在我看来,当$(“#title”)的内容为“hello”并获得一次点击时,它会执行函数saygoodbye()并添加一个新的click-event匿名函数.它获得外部警报.当内容“再见”并获得单击时,这两个函数都应该执行.它应该获得一个外部警报和一个内部警报.

但实际上,我得到一个外部警报和两个内部警报.
另一个内心警报来自哪里?

var count = 0;
function saygoodbye(){
  alert("ok is outer");
  $("#title").html("goodbye");
  $("#title").click(function() {
    alert("ok is inner");
    $('#title').html("hello");
    $('#title').off("click");
  });
}
<script src="//code.jquery.com/jquery-2.1.4.min.js" type="text/javascript"></script>

<h1 id="title" onclick="saygoodbye();">hello</h1>

解决方法

>第一次单击“saygoodbye”运行时,发布“外部”警报,并建立单击处理程序.
>第二次点击,“saygoodbye”再次运行,发布“外部”,并建立另一个点击处理.
>那个“click”事件然后由jQuery处理,在这一点上有两个你的“点击”处理程序来调用.

当你调用.click()时,你总是会添加一个新的处理程序;以前添加的处理程序不会被删除.当你调用.off()时它们会被删除,但是直到两个处理程序已被附加才会发生.库(jQuery)维护处理程序列表并使用它自己的内部事件处理程序来实际处理来自浏览器的事件.因此,即使只有两个真正的“单击”事件,在调用jQuery处理程序时,有两个jQuery注册的处理程序供库调用.

通常,在其他事件处理程序中添加事件处理程序是一种可疑的处理方式.这不完全是错的,但它增加了复杂性.在这里,您可以使用两种不同的技术来注册事件处理程序. “saygoodbye”函数附加到DOM元素的“onclick”属性.但是,jQuery代码使用DOM API attachEventHandler()来注册处理程序.这两种机制是分开的.当发生“点击”时,浏览器将首先检查“onclick”属性,然后调用通过API注册的任何处理程序.

关于类上的JavaScript click事件监听器js监听click事件判断的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Flash对象上的javascript onclick事件、JavaScript onClick事件 – HTML表、javascript – Angular 2路由器事件监听器、javascript – Click事件函数执行两次等相关内容,可以在本站寻找。

本文标签: