Я создаю систему, чтобы я мог обновлять статистику игроков на лету. Весь мой код работает, даже встроенный, поэтому статистика может иметь максимальное значение выше 100, а полоса все еще работает в процентах.
Я даже получил его, чтобы иметь несколько баров (см. закомментированный код), но затем я обнаружил проблему, если я обновлял одно поле, оно брало процент для этого и обновляло другое, они должны обновляться независимо друг от друга.
Сначала я собирался стиснуть зубы и просто сделать 3 очень похожих функции: одну для здоровья, одну для брони и одну для энергии. Но так как у меня есть 5 игроков, и я хочу, чтобы одна страница обновляла их всех, это означало бы создание 15 скриптов, которые действительно избыточны.
Я надеюсь, что вы поможете мне найти способ «шаблона» системы, чтобы у меня было «неограниченное количество» игроков и только одна функция для обновления любого из них.
Чтобы было проще увидеть, я настроил JSfiddle: https://jsfiddle.net/nekollx/7o3bdwyt/3/
В сторону: я только что заметил по какой-то причине, когда вы открываете скрипку, она не показывает CSS, поэтому она включена ниже
body {
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
}
hr {
display: block;
margin-top: 0.5em;
margin-bottom: 0.5em;
margin-left: auto;
margin-right: auto;
border-style: inset;
border-width: 4px;
}
.CharInfo {
-webkit-transform: rotate(-180deg);
-moz-transform: rotate(-180deg);
-o-transform: rotate(-180deg);
transform: rotate(-180deg);
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
filter: progid: dximagetransform.microsoft.basicimage(rotation=2);
font-weight: bolder;
color: white;
-webkit-text-stroke: 0.05em #000;
font-size: x-large;
padding: 0px 0px 0px 10px;
}
.line {
width: 200px;
}
.stripesLoader {
margin: 4px;
height: 30px;
position: relative;
background: linear-gradient(90deg, #eee 50%, transparent 50%);
background-color: crimson;
background-size: 200%;
background-position: 80%;
width: 50%;
border-radius: 5px;
transform: scale(-1);
transition: 0.3s;
}
.stripesLoader: before {
content: "";
position: absolute;
width: 50%;
height: 100%;
border-radius: 5px;
background:
linear-gradient(
45deg,
transparent 25%,
rgba(238, 238, 238, 0.5) 25%,
rgba(238, 238, 238, 0.5) 30%,
transparent 30%,
transparent 35%,
rgba(238, 238, 238, 0.5) 35%,
rgba(238, 238, 238, 0.5) 70%,
transparent 70%
);
animation: shift 2s linear infinite;
background-size: 60px 100%;
box-shadow:
inset 0 0px 1px rgba(0, 0, 0, 0.2),
inset 0 -2px 1px rgba(0, 0, 0, 0.2);
}
@keyframes shift {
to {
background-position: 60px 100%;
}
}



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


Поскольку элемент progress, по-видимому, является элементом, который предшествует соответствующему элементу ввода, вы можете использовать метод jQuery prev.
Я не проверял это, но что-то вроде этого:
function update(target) {
var $progress = $(target).prev();
// ...
$progress.css('backgroundPosition', valeur+'%');
if (valeur <= 25){
$progress.css('backgroundColor', 'red');
}
// .... etc
}
Хорошо, я думаю, что получил ваш ответ!
Так что в основном вам нужно работать со своим идентификатором, чтобы вы могли создать единый скрипт для всех игроков/атрибутов.
Я завернул ваш плеер в div: <div id='player0'>
Я изменил ваше значение jq, чтобы оно разделялось для каждого HP, брони и энергии (jqValueHP, jqValueArmor, jqValueEnerg).
Создал функцию playerclone, которая клонирует ваш player0 div и меняет его идентификатор для следующего индекса.
Добавьте кнопку, чтобы создать больше игроков, которые будут вызывать playerclone и увеличивать счетчик игроков.
Вот рабочий пример!
Обновлено:
Я сделал новую скрипту для полей xxx и yyyздесь.
Обратите внимание, что поле xxx всегда будет иметь значение, которое вы установили для первого игрока для любого другого игрока (поскольку мы клонируем div).
Что касается анимации, мне кажется, все в порядке. У связанной вами скрипки не было CSS, поэтому обычно она не показывает анимацию...
Я действительно заметил некоторые ошибки CSS на скрипке, возможно, что-то пропустил, когда скопировал ваш код. Все исправил, теперь должно работать нормально.
да, это исправлено, но рабочий пример, кажется, ведет себя странно, когда я загружаю ее сам, она показывает java со ссылкой для j query, но ссылка Css и jquery не загружается, когда я обращаюсь к ней как к ссылке, но у вас есть плавник. оба счета .... странно
Извините, меня не было на выходных. Я не понимаю, что вы имеете в виду. Если вам нужен рабочий jFiddle, просто используйте мой. Если у вас возникли проблемы с импортом решения в ваш код, мне нужно немного больше контекста для вашего кода.
нет, он работает, но по какой-то причине моя JS-рабочий пример для него не загружает CSS и Javascript, когда я пытаюсь получить к нему доступ, например, как здесь, в stackoverflow. Но на мой счет все нормально
это работает довольно хорошо, единственное, что, кажется, не работает, - это меньшая функция визуального отображения текущих/максимальных значений (xxx/yyy с интервалами), честно говоря, это незначительная проблема. Но я замечаю одну вещь: это кажется, когда вы обновите его, полосы теряют анимацию jsfiddle.net/nekollx/7o3bdwyt