gpt4 book ai didi

javascript - 获取内部跨度的文本

转载 作者:行者123 更新时间:2023-11-28 21:01:10 26 4
gpt4 key购买 nike

如果我有以下链接:

    <a href="#" onclick="return navigateTo(this)" id="menuList:0:menu" class="normalLink">
<span id="menulist:0:menuLabel">
<span > Main Page </span>
</span>
</a>

<a href="#" onclick="return navigateTo(this)" id="menuList:1:menu" class="normalLink">
<span id="menulist:1:menuLabel">
<span > Search Orders </span>
</span>
</a>

<a href="#" onclick="return navigateTo(this)" id="menuList:2:menu" class="selectedLink">
<span id="menulist:2:menuLabel">
<span > Orders History </span>
</span>
</a>

我想获取类名为 selectedLink 的元素,然后获取该元素内部 span 的值,如上例所示 订单历史记录

我可以完成查找具有 selectedLink 类的元素的第一部分,但我无法检索该元素内部范围内的文本。下面是我的代码,用于查找带有 selectedLink 类的元素:

    var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++)
{
var classes = elem[i].className;
if(classes == 'selectedLink' ){
alert("ok found it the selected link");
}
}

有人可以建议一种检索订单历史记录的方法吗?谢谢

更新:跟进问题

所以这个练习的重点是,我想添加一个检查,如果页面是“订单历史记录”,但导航菜单将 selectedLink 样式应用于另一个页面(当用户按下返回)我想要 JavaScript 逻辑来解决这个问题,所以下面是我的代码:

            //get the element that has "selectedLink" style
// if the text says "Order History" then style is applied ok
var elems = document.getElementsByClassName("selectedLink");
if(typeof elems != "undefined"){
for(var i = 0; i < elems.length; i++){
alert(elems.length);
var text = elems[i].innerText || elems[i].textContent;
alert(text);
if(text == "Order History"){
alert("its ok");
}
else { //we're here because the element that has "selectedLink" style in not "order History"

//get all elements that have "normalLink" style and see which one is "Order History"
var allLinks = document.getElementsByClassName("normalLink");
for(var j = 0; j < allLinks.length; j++ ){
var curText = allLinks[j].innerText || allLinks[j].textContent;

if(curText == "Order History"){
alert("there it is at counter " + j);
alert(allLinks[j].innerText);

//swap the class names
allLinks[j].className = "selectedLink";
elems[i].className = "normalLink";
break;
}
}
}
}
}

更改类名位不起作用!我做错了吗?

更新2:

已修复,这是我的愚蠢错误:

更改了以下内容的顺序:

    allLinks[j].className = "selectedLink";
elems[i].className = "normalLink";

至:

    elems[i].className = "normalLink";
allLinks[j].className = "selectedLink";

最佳答案

首先,只需使用getElementsByClassName()来获取元素,这样可以节省大量的精力:

var link = document.getElementsByClassName("selectedLink")[0]; // new browsers only
var link = document.querySelector(".selectedLink"); // more support, but not in IE7 or lower
var link = $(".selectedLink"); // with jQuery

然后,由于该文本是唯一的文本,因此您可以仅使用 textContent (旧版 IE 中的 innerText)

您的最终代码是其中之一,具体取决于您的目标浏览器以及您是否有框架:

var text = link.textContent; // new browsers
var text = link.innerText || link.textContent; // older browers
var text = link.text(); // jQuery

关于javascript - 获取内部跨度的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11025018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com