![](/img/trans.png)
[英]Change href link based on querystring parameter with JavaScript
[英]Change Link href Based on Viewport (Javascript)
我處於一種特殊情況下,如果<li>
有一個子<ul>
,並且視口小於480px,則需要更改<li>
內的<a>
的href
。
我對編寫JavaScript知之甚少,但是我認為這就是邏輯的工作方式:
<nav id="navigation1">
的頂級<ul>
內部找到任何<li>
<ul>
。 <a>
任何<a>
。 <ul>
。 <li>
<a>
的href
值更改為``#navigation1``。 這是HTML:
<nav id="navigation1" class="navigation" style="height:auto; z-index:1; overflow:visible">
<ul class="f-fp f-lp" id="fwNav1">
<li class="fwNavItem"><a href="change-this-link.html"><span class="Navigation">About</span></a>
<ul class="sub">
<li class="fwFirstChild fwNavItem"><a href="#"><span class="Navigation">About Me</span></a></li>
<li class="fwNavItem"><a href="#"><span class="Navigation">About You</span></a></li>
<li class="fwLastChild fwNavItem"><a href="#"><span class="Navigation">About We</span></a></li>
</ul>
</li>
<li class="fwNavItem"><a href="change-this-link.html"><span class="Navigation">Services</span></a>
<ul class="sub">
<li class="fwFirstChild fwNavItem"><a href="#"><span class="Navigation">What Me Do</span></a></li>
<li class="fwLastChild fwNavItem"><a href="#"><span class="Navigation">What You Do</span></a></li>
</ul>
</li>
</ul>
</nav>
(我知道,不是最漂亮的HTML,但是它是由WYSIWYG創建的,我無法控制它。很抱歉。)
解決方案必須使用普通javascript,請不要使用jQuery。
謝謝!
if (window.innerWidth < 480) { // note 1
var links = document.querySelectorAll("#navigation1 > ul > li > a");
var link;
for (var i = 0; i < links.length; i++) {
link = links[i];
if (link.parentElement.getElementsByTagName("ul").length > 0) // note 2
link.href = "#navigation1";
}
}
注意1: IE8-中不存在window.innerWidth
(您未指定瀏覽器要求)。 由於undefined < 480
為假,這僅意味着代碼不會在此處運行,這可能很好。 另外,您可能希望根據自己的需要將其更改為<= 480
。 您的問題在這方面是矛盾的。
注2:這不是您的觀點4的100%; 而是檢查是否有任何后代 <ul>
,不一定是孩子。 從HTML看來,這似乎很好,但如果不是,則需要進行額外的檢查(遍歷link.parentElement
的直接子link.parentElement
並檢查<ul>
,或檢查getElementsByTagName()
的結果是否為parentElement
為與link.parentElement
相同。遺憾的是,沒有標准的DOM方法通過某些屬性來過濾給定元素的直接子級。
您還應該記住,此操作只能運行一次,因此瀏覽器調整大小(或更改手機方向)可能會更改寬度,但不會導致鏈接更新。 如果更改鏈接的要求例如與響應CSS(即媒體查詢)有關,則這是一個問題,因為CSS會根據新寬度而變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.