JavaScript
7
Вклад в тег
///
var interface=document.getElementById("interface");
interface..addEventListener('input', function (e) {
var target= e.target || e.srcElement // получаем элемент где произошло событие
switch(target.id){
case "hatHarmon" : // для каждого input
aVolume = e.target.value;
break;
case //.....
});
// И проще и быстрее и нагляднее. Вместо мусора ...Button-ов то же самое одним все накрыть.
var interface=document.getElementById("interface");
var hatValume=interface.querySelector("#hatVolume")
tomValue=hatValume.parentElement.nextElementSibling.querySelector("#tomVolume");
if (dCh.checked) {
dVel = 1;
};
if (!dCh.checked) { // зачем, лишние операции, потеря скорости, замени на else
dVel = 0.5;
};
if (cCh.checked) {
cVel = 1;
};
// не красиво долго, плохие имена, я путаю, "dCh cCh - 10 сек уходит на нахождение различия". Код не поддерживается, долго искать что такое cCh, вся область засорена мусорными глобальными переменными.
// Решение, разбить все на блоки или функции, или Паттерн реализовать, к примеру фабрику для звуков и акцентов
// Массивы у вас не массивы а куча переменных, можно автоматизировать циклом, создать массив из этих элементов, и перебирая его уже составить 2 массива из звуков и акцентов, и уже работать с ними.
#start:hover,
#stop:hover,
#clear:hover {
background-color: #2C7769;
}
/* медленно, xQuery долго(для больших проектов конечно) их ищет этот селектор. Нужно расписать до него путь поконкретнее*/
#playStop div{
background-color: #2C7769;
}
/**
* Изменяет по шаблону все найденные совпадения
* @param htmlcode страница которую нужно изменить
* @param listReplace список значений для изменения найденных
* @param pattern паттерн регулярное выражения поиска
* @param globalFind нужно ли изменять все значения или только одно
* @returns {*|string|void} возращаяет изменненный текст html документа
*/
function replaceToken(htmlcode, listReplace,pattern, globalFind = true) {
/**
* Получает список токенов, которыми нужно заменить
* Возращает заряженный генератор с списком по порядку выражений замены,
* каждый раз будет возращать новое значение замены, список может быть прислан с сервера,
* в случаее если найденных значений будет больше, то он не чего не измениn. Выражение "$&"
* не изменяет найденое вхождение
* @param list_tokens - массив- список значений которыми нужно заменить всякие 0x23423j343/
* @returns {{generator: generaterSReplace}} возвращает генератор, который каждый раз будет возвращать следующие значения для замены
*/
function loadGenerator(list_tokens) {
return {
generator: function* generaterSReplace() {
for(let i=0; i<list_tokens.length;i++)
yield list_tokens[i];
return "$&";
}
}
}
let generator=loadGenerator(list_tokens).generator();
let reg;
if(globalFind || listReplace instanceof Array)
reg =new RegExp(pattern,["mg"]);
else
reg=new RegExp(pattern,["m"]);
return res =htmlcode.replace(reg,function(str1,str2){
return str1.replace(str2,generator.next().value);
});
}/****************TEST-------------------------TEST***********************************/
var list_tokens=["1234567890","0987654321"]; // значения для замены, то есть html документ к примеру шаблон присланный с сервера или исходный текст самой страницы к примеру
// var htmlCode;
// $.get(document.location.href, function(data){htmlCode=data.data});
let html='разные там <b>html</b>елементы. А вот и трока поиска: </b><b id="finish_kar_cri">0x61496a395F549XzxzxZ</b>....' +
'a вот еще один такой же элемент(предположим что там class а не id для массового поиска)'
+'<b id="finish_kar_cri">0x323232323</b>...';
let pattern='<b id="finish_kar_cri">(\\w+)</b>'; // ваша строка поиска в скобках значениыя ддля замены
var res=replaceToken(html,list_tokens,pattern); // возвращаем имененную строку
$(document).append(res); // console.log(res)// результат, измененная текст с вашим токеном
// token[1] - и будет найденным текстом
var ell=$("#finish_kar_cri");
var lastVal=ell.text(); // запомнили старое значение
ell.text("8496444");
var script=document.getElementById("id-script");
var scriptTarget=document.getElementById("id-script-target");
scriptTaget.innerText=script.innerTarget; // скрипт не будет исполнен, так как этот элемент уже был загружен.
// более правильно будет создать элемент скрипта и добавить его на страницу
var s=document.createElement("script");
s.innerText=script.innerText;
document.body.appendChild(s);