Распространение переменной во всех гиперссылках на странице (странная проблема)Jquery

Программирование на jquery
Ответить
Гость
 Распространение переменной во всех гиперссылках на странице (странная проблема)

Сообщение Гость »


Поэтому мне нужно распространить определенную переменную в строке запроса на все гиперссылки на странице, за исключением некоторых из них. В этом примере переменная — «referralCode» (я также ищу в существующих ссылках просто «referral=" и не добавляю, если он уже есть).

Для этого я использую JavaScript на старом веб-сайте WebForms ASP.NET.

Кажется, JavaScript работает отлично, но для ссылок, которые выглядят так, это совершенно странно, и я совершенно ошарашен, почему: что бы здесь ни было< /код>

Подобные ссылки на веб-сайте используются для открытия модальных окон для воспроизведения видео, открытия/закрытия ссылок-гармошек и т. д., поэтому распространение переменной на эти ссылки портит и ломает ссылки, поэтому JavaScript должен игнорировать их.

Проблема в том, что... к этим ссылкам добавляется переменная, хотя селектор в JavaScript игнорирует их, И Я ПОДТВЕРЖДАЮ ЭТО, просматривая все выходные данные "console.log" и не видя ни одной из этих ссылок. ="#" ссылки в них. Я просто в тупике.

Мой JavaScript:

$(document).ready(function () { // игнорируем ссылки, начинающиеся с «#» или «javascript:» const $links = $('a').not('[href^="#"]').not('[href^="javascript:"]'); const targetDomain = 'localhost'; const targetDomainClient = "мойдомен.com"; const ReferralCodeQuerystringParameter = "ReferralCode"; var ReferralCode = $("#referral-code").text(); // это просто скрытый с кодом, здесь нет проблем если (код ссылки) { constvariableToAdd = ReferralCodeQuerystringParameter + "=" + ReferralCode; $links.each(функция () { константа $ссылка = $(это); пусть href = $link.attr('href'); если (!href) { возвращаться; } console.log(href); // это не выводит никаких hrefs "#" if (href && (href.includes(targetDomain) || href.includes(targetDomainClient) || href.startsWith('/'))) { if (!href.includes(variableToAdd) && !href.includes('referral=')) { если (href.includes('?')) { href += `&${variableToAdd}`; } еще { href += `?${variableToAdd}`; } $link.attr('href', href); } } }); } }); Вот HTML-код пары таких ссылок «#»:

вещи лол, что Как я уже сказал, эти hrefs "#" никогда не отображаются в выводе "console.log" для коллекции $links, что для меня означает, что они даже не обрабатываются JavaScript. Я пробовал использовать строгий JavaScript (без jQuery), обязательно используйте вкладку «Частное», чтобы избежать кэширования JS (и подтвердил, что файл .js, включенный на страницу, правильный), пробовал браузеры Edge и Chrome... все равно происходит. Моя голова вот-вот взорвется.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»