很抱歉,如果这是一个愚蠢的问题,但我对HTML和javascript很新。
我正在尝试点击没有唯一标识符的网页上的按钮/链接(至少这是我所看到的)。 以下是HTML代码的摘要。 是否可以在'a'元素下面引用跨度值/文本(例如“搜索事件”,“新事件”)?
或者还有其他方法可以解决这个问题吗?
"<div class="item EP lvl1 " navmode="1" artype="NavBarItem" arid="app1598" lvl="1" arwindowid="0" style="height: 25px; overflow: visible; border-top: medium none; border-bottom: medium none;">
<a class="btn" style="z-index: 1;" onclick="javascript:CallARGHPD_58INC_58AppListEntryPointamrrm6100EPFunc(false, this);">
<span class="navLabel lvl1 ">
New Incident
</span>
</a>
</div>
<div class="item EP lvl1 " navmode="1" artype="NavBarItem" arid="app1599" lvl="1" arwindowid="0" style="height: 23px; overflow: visible; border-left: 1px solid rgb(…, 233); border-top: medium none; border-bottom: medium none;">
<a class="btn" style="z-index: 1;" onclick="javascript:CallARGHPD_58INC_58AppListEntryPoint_95Searchamrrm6100EPFunc(false, this);">
<span class="navLabel lvl1 ">
Search Incident
</span>
</a>
</div>
</div>
</div>"
修改
这是我到目前为止所做的:
通过引用ID并按标签名称过滤将整个表单存储到变量中,如下所示;
var links = IE.Document.getElementById("WIN_0_80077").getElementsByTagName("a");
基本上,表格如下所示,点击每个表格,如文件夹结构,以访问内部链接。
Form
| Incident Management
| New Incident (links to another page)
| Search Incident (links to another page)
| Problem Management
| New Problem (links to another page)
| Search Problem (links to another page)
每个都有span属性及其相应的文本,如大纲中所述。
点击每个按钮/链接导航到内部结构(例如,事件管理&gt;搜索事件) - 我试图通过使用span文本作为参考(或任何可行的参考)循环链接来实现这一目标
for (link in links) {
for (span in link.getElementsByTagName("span")) {
if (condition) //validation for span text {
span.click;
}
}
}
这甚至有意义吗?再次,抱歉,如果没有。感谢你的帮助。
更新
感谢您的建议。 它可能不是最好的解决方案,但至少,我能够通过以下方式实现出路。
// Reference the intended element/class/item
var link = objIE.Document.querySelectorAll('a[onclick="javascript:CallARGHPD_58INC_58AppListEntryPoint_95Searchamrrm6100EPFunc(false, this);"]');
// Do something with it (e.g. click the link)
link[0].click();
答案 0 :(得分:0)
您可以在JavaScript中以多种方式执行此操作,但有一种方法是使用
按类引用span元素var firstLabel = label[0].innerHTML;
var secondLabel = label[1].innerHTML;
这将返回班级&#39; navLabel&#39;
的所有元素然后要引用单个标签,您可以这样做:
<!DOCTYPE html>
<html ng-app="demoapp">
<head>
<title>My App</title>
<link rel="stylesheet" href="style.css">
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" />
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular-route.js"></script>
<script src="//cdn.jsdelivr.net/angular.bootstrap/0.11.0/ui-bootstrap-tpls.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div ng-controller="TableCtrl" class="container">
<div class="row">
<div class="col-lg-12">
<div class="">
<div class="table-responsive">
<div class="ng-data-table" ng-dt="Demo"></div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
同样,有多种方法可以做到这一点,它只取决于你获得它们后你想要做什么。
答案 1 :(得分:0)
只需使用:
var label=document.getElementByClassName('navLabel lvl1');
label[0].value; //New Incident
label[1].value; //Search Incident