Почему измененное значение не отображается после точки останова?Часть 2 - PullRequest
0 голосов
/ 23 мая 2018

Значение в заголовке вкладки, измененное с помощью значения JS, не сохраняется на экране @media breakpoint / accordion - хотя значение в области содержимого с вкладками сохраняется.

Код js:

function check_1_input(X, Y) {  
  var ids=X.split("_"); console.log(' X '+X+' id '+ids[1]); 
  var PX=document.getElementById(X); 
  var PY=document.getElementById(Y); 
  PX.childNodes[0].textContent = "Changed"; 
  PY.childNodes[0].textContent = "Changed";
}

, который вносит изменения, находится в конце html - не уверен, почему он работает только в этом месте.

Скрипка https://jsfiddle.net/PhilB/077dbf37/10/

1 Ответ

0 голосов
/ 23 мая 2018

Проблема в том, что вы используете идентификаторы элементов в вашей функции check_1_input.Плагин адаптивных вкладок клонирует ваши элементы вкладок при инициализации, чтобы иметь как горизонтальные, так и вертикальные вкладки с различными классами, которые скрываются или отображаются в зависимости от ширины носителя, но при этом идентификаторы остаются неизменными.Поскольку ваша функция ищет элементы, используя getElementById, она найдет только первый.

В конечном итоге вы получаете два разных элемента с одинаковым идентификатором, что является плохой практикой.Использование класса в качестве селектора вместо идентификатора устраняет проблему.Я использовал jQuery для выбора классов вместо идентификаторов, так как у вас загружен jQuery.Вы можете удалить все идентификаторы в элементах вкладок, так как плагин адаптивных вкладок всегда клонирует их и приводит к недопустимому DOM (два элемента с одинаковым идентификатором).

См. Мою обновленную версиютвоя скрипка здесь .

...