V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Marsss
V2EX  ›  JavaScript

前端小白,请教一个关于用 js 点击页面元素的问题。

  •  1
     
  •   Marsss · 2021-01-06 16:12:18 +08:00 · 2237 次点击
    这是一个创建于 1449 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在测试某个网站的前端代码的时候,用 chrome 打开网站,我发现这网站的前端有很多地方鼠标放上去,鼠标变为手的形状,鼠标点击正常。但是当我打开 F12,在 console 里面,用 document.getElementsByClassName 选择到这个 div 元素,然后 document.getElementsByClassName("divClassName").click() 却不起作用。

    我确定我确实选择到这个元素了,因为在 console 里鼠标移上去,能看到页面确实是对应的 div 元素。我试过换邻近的 div 都是一样不起作用。

    我对前端确实了解很少,不明白这里的原理,我以为鼠标能点的,用 js 也一定有方法点击。

    还请大家指点一下。
    17 条回复    2021-02-24 10:51:51 +08:00
    kop1989
        1
    kop1989  
       2021-01-06 16:17:20 +08:00
    假定没有其他错误的话,推断是未见得他把你理解的点击事件放在了“click”事件中。
    mara1
        2
    mara1  
       2021-01-06 16:18:07 +08:00
    1. document.getElementsByClassName 可能拿到多个元素
    2. 想象 1 个框里面套了一个框,你可能手点的是内部的框,js 点的外部的框

    其他我想不来了,楼下补充
    darknoll
        3
    darknoll  
       2021-01-06 16:18:52 +08:00
    document.getElementsByClassName("divClassName") 不是返回数组吗
    tutou
        4
    tutou  
       2021-01-06 16:19:42 +08:00
    document.getElementsByClassName("divClassName") 返回的是数组,打印看看不就知道了
    jydeng
        5
    jydeng  
       2021-01-06 16:19:56 +08:00
    用开发者工具直接选中元素,然后$0.click()。
    或者就是如楼上说的,没有绑定在 click 事件中。
    yzliua
        6
    yzliua  
       2021-01-06 16:21:04 +08:00
    楼上说的对,假定只有一个同类元素,你也得下面这种用法
    document.getElementsByClassName("divClassName")[0].click()
    LiubaiQ
        7
    LiubaiQ  
       2021-01-06 16:27:16 +08:00
    cursor:pointer 的效果,破案,各位散了吧
    wangjiang
        8
    wangjiang  
       2021-01-06 16:28:58 +08:00
    也许只是 cursor:pointer
    Marsss
        9
    Marsss  
    OP
       2021-01-06 16:32:24 +08:00
    我是用了[0]来取了单独的 div 的,也试了 @jydeng 说的方法,用开发者工具直接选中元素,然后$0 也看到选中了,然后$0.click()也是无效,相邻的 div 都试过了。
    Marsss
        10
    Marsss  
    OP
       2021-01-06 16:35:14 +08:00
    楼上上的 cursor:pointer 是指只是一个效果么,但是我用鼠标点了,能观察到页面样式的改变(确实没观察到有链接跳转),我该如何用 js 来实现这个点击后页面样式改变的效果呢
    putaozhenhaochi
        11
    putaozhenhaochi  
       2021-01-06 16:35:35 +08:00
    楼上说的 CSS .
    shyrock
        12
    shyrock  
       2021-01-06 17:50:45 +08:00
    前端小白猜测,点击事件可能不是绑定的这个元素,而可能是上级元素甚至 document 。
    比如在 document.onclick()里面判断点击落点并处理。这样你 getElements().click()无法模拟触发。
    dengshen
        13
    dengshen  
       2021-01-06 17:53:11 +08:00 via iPhone
    放上去? hover 触发的 pointer
    dd112389
        14
    dd112389  
       2021-01-07 18:03:07 +08:00
    建议贴网址和图片.
    source
        15
    source  
       2021-01-12 10:19:10 +08:00
    楼主只说了鼠标点击会有“页面样式的改变”,可能本身无关 js,可能是纯 css 写的 focus,active 效果?
    source
        16
    source  
       2021-01-12 10:19:42 +08:00
    还是建议贴一下网址
    Roger006
        17
    Roger006  
       2021-02-24 10:51:51 +08:00
    可以再验证一下 1#的说法,绑定的事件,也有可能是 mousedown|mouseup,移动设备下是 touchstart|touchend 。直接用鼠标点击的时候,这些都是会触发的
    或者 2#,是这个节点的内部触发的也有可能
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1058 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:09 · PVG 04:09 · LAX 12:09 · JFK 15:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.