首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过innerHTML查找元素以从注入的javascript中调用angular ng-click

通过innerHTML查找元素以从注入的javascript中调用angular ng-click
EN

Stack Overflow用户
提问于 2019-03-28 19:16:11
回答 2查看 223关注 0票数 0

我正在尝试从网页上的一个特定的a-tag从注入的脚本调用ng-click

我怎样才能从我的页面中找到确切的a-tag?我知道如果我有一个类名,我可以写($('a.classname')),,但是有没有办法找到包含innerHTML 苹果的标签呢?

如果没有,是否可以调用ng-click,因为它是页面上的第10个a-tag?作为a10

页面上的标签:

代码语言:javascript
复制
    <a ng-click="myFunction()">Apple</a>

注入的脚本:

代码语言:javascript
复制
    angular.element($('a')).scope().$apply(function() {
    angular.element($('a')).scope().myFunction();
    });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-28 19:48:43

如果您试图在外部执行此操作,例如在扩展中或从控制台,则只需在目标元素上触发单击事件即可。

您可以使用eq()来确定<a>索引的目标,或者使用:contains选择器,或者为了更精确地测试文本,可以使用filter()

代码语言:javascript
复制
angular
  .module('app', [])
  .controller('MainCtrl', ($scope) => {
    $scope.myFunc = (val) => {
      console.log('Clicked value = ', val)
    };
  });

// from outside angular app
setTimeout(() => {
  // by index
  $('a').eq(3).click()
  // or by text contains
  $('a:contains(Apple)').click();
  // using filter()
  $('a').filter(function() {
    return this.textContent.trim() === 'Apple';
  }).click();

}, 500)
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.js"></script>

<div ng-app="app" ng-controller="MainCtrl">
  <a href ng-click="myFunc(1)">1</a>
  <a href ng-click="myFunc(2)">2</a>
  <a href ng-click="myFunc(3)">3</a>
  <a href ng-click="myFunc(4)">Apple</a>
</div>

票数 2
EN

Stack Overflow用户

发布于 2019-04-01 02:21:54

关于我在charlietfl的回答中对xpath的评论,我想我也会分享我提到的例子。

代码语言:javascript
复制
// by specific anchor tag from full xpath

var nodesSnapshot = document.evaluate("//html/body/div[1]/a[1]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
for ( var i=0 ; i < nodesSnapshot.snapshotLength; i++ )
{
nodesSnapshot.snapshotItem(i).click();
nodesSnapshot.snapshotItem(i).style.background = 'yellow';
console.log('Clicked first <' + nodesSnapshot.snapshotItem(i).tagName + '> tag and marked it yellow')
}

// or by specific anchor tag from xpath by index that contains the text

var nodesSnapshot = document.evaluate("//a[3][text()[contains(., 'Apple')]]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
for ( var i=0 ; i < nodesSnapshot.snapshotLength; i++ )
{
nodesSnapshot.snapshotItem(i).click();
nodesSnapshot.snapshotItem(i).style.background = 'pink';
console.log('Clicked third <' + nodesSnapshot.snapshotItem(i).tagName + '> tag that contains ' + nodesSnapshot.snapshotItem(i).text + ' and marked it pink')
}
代码语言:javascript
复制
<div ng-app="app" ng-controller="MainCtrl">
  <text>1: </text><a ng-click="myFunction()">Apple</a>
  <text>2: </text><a ng-click="myFunction()">Apple</a>
  <text>3: </text><a ng-click="myFunction()">Apple</a>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55396246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档