次のリンクがある場合:
<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
上記の例で示している場所に取得したいと考えていOrder History
ます。
クラスを持つ要素を見つける最初の部分はできますがselectedLink
、その要素の内部スパン内のテキストを取得することはできません。以下は、 class を持つ要素を見つけるための私のコードです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");
}
}
誰も取得する方法を提案できますOrder History
か? ありがとう
更新: フォローアップの質問
したがって、この演習のポイントは、ページが「注文履歴」であるにもかかわらず、ナビゲーションメニュー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";