Javascript 标签<;a>;添加单击和如何添加属性;主动的;
我想为标签添加单击,同时为当前的Javascript 标签<;a>;添加单击和如何添加属性;主动的;,javascript,html,Javascript,Html,我想为标签添加单击,同时为当前的添加属性“active” 我是这样做的,但不起作用: HTML: 如何为这个问题编写正确的js 单击链接会导致浏览器离开当前页面并加载新页面 对当前页面所做的任何DOM修改都将丢失 您需要在新页面中添加该类。理想情况下,您可以使用服务器端代码执行此操作,但您可以通过将location.href与菜单中每个链接的href属性进行比较来使用客户端JavaScript。单击链接会导致浏览器离开当前页面并加载新页面 对当前页面所做的任何DOM修改都将丢失 您需要在新页面中
添加属性“active”
我是这样做的,但不起作用:
HTML:
如何为这个问题编写正确的js 单击链接会导致浏览器离开当前页面并加载新页面 对当前页面所做的任何DOM修改都将丢失
您需要在新页面中添加该类。理想情况下,您可以使用服务器端代码执行此操作,但您可以通过将
location.href
与菜单中每个链接的href
属性进行比较来使用客户端JavaScript。单击链接会导致浏览器离开当前页面并加载新页面
对当前页面所做的任何DOM修改都将丢失
您需要在新页面中添加该类。理想情况下,您可以使用服务器端代码执行此操作,但您可以通过将
location.href
与菜单中每个链接的href
属性进行比较来使用客户端JavaScript。您的逻辑很好,但一旦浏览器加载新页面,您就会丢失所选内容
您可以向代码中添加preventDefault()
,以阻止浏览器跟随链接,但这样链接将无法工作;)
似乎您应该检查哪个链接是当前路径,并在该路径上设置类,如下所示:
"use strict";
$(document).ready(function(){
document.querySelectorAll('.leftFocus a').forEach(function (link) {
if (link.href === window.location.href) {
link.classList.add('active');
}
});
});
您的逻辑很好,但一旦浏览器加载新页面,您就会丢失所选内容 您可以向代码中添加
preventDefault()
,以阻止浏览器跟随链接,但这样链接将无法工作;)
似乎您应该检查哪个链接是当前路径,并在该路径上设置类,如下所示:
"use strict";
$(document).ready(function(){
document.querySelectorAll('.leftFocus a').forEach(function (link) {
if (link.href === window.location.href) {
link.classList.add('active');
}
});
});
将
active
添加到每个页面非常感谢j08691,但我该怎么做?我只希望当前页面具有“活动”属性。你能给我详细解释一下吗?非常感谢你!将active
添加到每个页面非常感谢j08691,但我该怎么做?我只希望当前页面具有“活动”属性。你能给我详细解释一下吗?非常感谢你!非常感谢@Quentin,让我尝试一下。非常感谢@Quentin,让我尝试一下。非常感谢pixelscript,我尝试了您的代码,修改如下:$(document)。ready(function(){“use strict”;document.querySelectorAll('.leftFocus a')。forEach(function(link){if(link.src==window.location.pathname){link.classList.add('active');}}}}});对于您在我的环境中的代码报告错误,但它似乎不起作用。我是否修改了错误的代码?再次感谢pixelscript。我已从document.querySelectorAll('.leftFocus a').forEach(link=>{…})中修改了您的代码;到document.querySelectorAll('.leftFocus a').forEach(函数(链接){…});我将link=>更改为函数(链接).是吗?@pixelscript.哦,是的,那很好,我只是使用了ES6语法^ ^如果没关系的话,用你的代码,标签可以跳转到新页面,但没有“active”属性,我怎样才能解决这个问题,谢谢你的pixelscript,你是个好人。@pixelscript我也改变了,它也不起作用。然后我改变了“/Recommend”页面并添加了“active”到“”,它起作用了。非常感谢你的帮助。非常感谢pixelscript,我试着修改了你的代码,比如:$(文档).ready(function(){“use strict”;document.queryselectoral('.leftFocus a').forEach(function(link){if(link.src===window.location.pathname){link.classList.add('active');}}});});我的环境报告中的代码有错误,但似乎不起作用。是我修改了错误的代码吗?再次感谢pixelscript。我已从document.queryselectoral('.leftFocus a').forEach(link=>{…})到document.queryselectoral修改了您的代码('.leftFocus a').forEach(function(link){…});我将link=>更改为function(link)。对吗?@pixelscript.Oh是的,那很好,我只是使用了ES6语法^ ^ ^ ^如果没关系,在代码中,标记可以跳转到新页面,但没有“active”属性,我怎样才能解决这个问题,谢谢你的pixelscript,你是个好人。@pixelscript我也改变了,它也不工作。然后我改变了“/Recommend”页面并添加了“active”,它工作了。非常感谢你的帮助。
$(document).ready(function(){
"use strict";
$('.leftFocus a').on('click', function(e){
// link will have correct class but no longer will navigate
e.preventDefault();
$(this).addClass('active').siblings('.leftFocusItem').removeClass('active');
});
});
"use strict";
$(document).ready(function(){
document.querySelectorAll('.leftFocus a').forEach(function (link) {
if (link.href === window.location.href) {
link.classList.add('active');
}
});
});