【问题标题】:TypeError: Cannot read property 'click' of nullTypeError:无法读取 null 的属性“单击”
【发布时间】:2014-07-25 10:51:58
【问题描述】:

我一直在使用这些代码在 Twitter 上大量关注/取消关注/收藏/取消收藏;

$('button.follow-button').click();
$('button.ProfileTweet-actionButtonUndo').click();
$('a.favorite').click();

我在网上找到了一些不工作的代码并尝试修复,所以它们现在几乎可以工作了。 唯一的事情就是去谷歌浏览器上的页面,按 f12 ,打开控制台并运行命令。

所以现在,我想在 Vine 中使用相同的系统。谷歌浏览器有一个扩展程序可以使用 vine (https://client.vineclient.com/),我正在尝试使用它,因为原始网页 (vine.co) 甚至没有用。

twitter 和this 的唯一区别是,在 vine 客户端的 ^followers^ 部分中,页面中会出现一个弹出窗口。而且我不知道它是否检测到按钮。

所以,我试图从原始页面点击的按钮的代码,(我使用开发人员工具/元素获取它)

<div class="user">
<img alt="Tuğçe Nur TEKİN" class="avatar" src="http://v.cdn.vine.co/r/avatars/3C2E4F40F11066473630650847232_pic-r-1397241239141e51579937f.jpg.jpg?versionId=ttIz4CExCjW_4TEnxYbnehPPpXRyzMco">
<div class="wrapper">
<a class="username" 
href="https://client.vineclient.com/explore/users/1066473613911363584">
Tuğçe Nur TEKİN
</a>
</div>
<a class="button follow" data-id="1066473613911363584">
<i class="icon">
</i>
</a>
</div>

要点击的东西在这里:

当我手动点击时,它会变成这样:

<a class="button unfollow" data-id="1066473613911363584"><i class="icon"></i></a>

以及我用来尝试点击的命令

$(".a.follow").click();

我得到的错误,

TypeError: Cannot read property 'click' of null

我该如何解决这个问题? 顺便说一句,在这些代码中,我实际上找不到任何 ^button^ 代码.. 谢谢!

更新

  1. http://prntscr。 com/3pmo2i
  2. http://prntscr。 com/3pmoyk
  3. http://prntscr。 com/3pmpym

【问题讨论】:

  • .click(a) 什么是a???
  • 应该是$("a.follow").click();,但是jQuery不会返回null,如果找不到元素也不会产生TypeError。只要包含 jQuery 并且可以正常工作,您从那段代码中收到的错误消息似乎是不可能的。
  • 那么,$ 似乎不是指 jQuery
  • @A.Wolff 我已经更正了,当我把代码放在这里时只是一个复制错误
  • @adeneo 那我该怎么办?

标签: javascript jquery html console greasemonkey


【解决方案1】:

当我从其他地方(例如 Selenium)在网页上运行 javascript 并同时使用开发人员工具时,我遇到了这个问题。 尝试关闭开发者工具并运行脚本。

【讨论】:

  • 太棒了!我自己永远也想不通这个:)
【解决方案2】:

为了使用 jQuery 库,您需要确保该库已加载到页面上。正如@adeneo 提到的,jQuery 不返回空值,这意味着$ 变量持有对非jQuery 对象的引用。要验证页面上是否加载了 jQuery,请在 chrome 调试器中输入 typeof jQuery。如果页面加载了 jQuery,控制台会输出“function”。否则,它将输出“未定义”。可以在here找到将 jQuery 添加到页面的步骤。

一旦您确认 jQuery 已正确加载到页面上,您将必须更正您用来访问所需元素的 CSS 选择器。

$(".a.follow") 表示“选择所有同时具有 'a' 和 'follow' 类的元素”。

相反,您的选择器应该是 $("a.follow"),这意味着“选择所有具有 'follow' 类的 'a' 类型元素”。

【讨论】:

    【解决方案3】:

    在我的情况下,解决方案是在我的浏览器中简单地关闭元素检查器! :)

    【讨论】:

      【解决方案4】:

      在我的情况下,jquery 和另一个库之间存在冲突,因此我必须在调用主脚本之前在脚本中实现 jQuery.noConflict();

      你可以阅读更多关于 jquery 冲突here

      【讨论】:

        猜你喜欢
        • 2020-01-29
        • 2022-01-12
        • 2021-12-04
        • 2021-12-17
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        相关资源
        最近更新 更多