Я знаю, что есть много похожих вопросов, касающихся Uncaught TypeError: Cannot read property 'match' of undefined, но у меня просто нет особого успеха в поиске решения в любом из них для моей проблемы.
Цель этого сценария - взять текущий URL-адрес страницы, использовать регулярное выражение для фильтрации строки запроса, найти все ссылки на странице, оценить, содержат ли они ?, и соответственно добавить строку запроса.
Я успешно провел тестирование на CodePen, однако, когда я реализовал сценарий на веб-странице, он потерпел неудачу и вернул Uncaught TypeError в консоли.
$(document).ready(function(){
var myRegexp = /\?([^]*)/gm;
var string_match = myRegexp.exec(window.location.href);
$('a').each(function(){
var href = $(this).attr('href');
href += (href.match(/\?/) ? '&' : '?') + string_match[1];
$(this).attr('href', href);
});
});
Флаги ошибки на .match(/\?/) ? '&' : '?') + string_match[1];, так что я ... просто заблудился. Почему это работает только на площадках для кода?
Исходный код, который я модифицировал, был от здесь.
См. Код, работающий на CodePen здесь.
Любая помощь приветствуется, спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Похоже, оценка произошла по неопределенному href. Возможно, вы захотите установить защитное кодирование, чтобы проверить, является ли href правдой, а затем оценить соответствие на нем. ИЛИ вы можете просто вернуться к undefined href и ничего не делать.
$(document).ready(function(){
var myRegexp = /\?([^]*)/gm;
var string_match = myRegexp.exec(window.location.href);
$('a').each(function(){
var href = $(this).attr('href');
href += href && (href.match(/\?/) ? '&' : '?') + string_match[1];
$(this).attr('href', href);
});
});
Может быть, href не был определен при сопоставлении с match?