node[i].replaceWith(...acc);
в функции parseNode, потому-что у вас цикл по фиксированной длинне количества элементов которые вы получили в начале var l = node.childNodes.length;
, а из-за того что вы один элемент можете менять на несколько с помощью replaceWith, общее количество элементов в ноде увеличивается и в итоге вы не проходите все. Вам нужно или обновлять каждую итерацию переменную l или заменять только на один элемент типа function parseNode(node, search, replace) {
let l = node.childNodes.length;
node = node.childNodes;
let reg = new RegExp(search, "gi");
for(let i = 0; i < l; i++) {
if(node[i].nodeType === Node.ELEMENT_NODE) {
parseNode(node[i], search, replace);
} else if(node[i].nodeType === Node.TEXT_NODE) {
let mas = node[i].textContent.match(reg);
let parts = node[i].textContent.split(reg);
if(0 === parts.length) {
continue;
}
let acc = [];
let span = document.createElement("span");
for (let j = 0; j < parts.length;j++){
//acc.push(document.createTextNode(parts[j]));
span.append(document.createTextNode(parts[j]));
if (j < parts.length - 1 ){
replace.textContent = mas[j];
span.append(replace.cloneNode(true));
//acc.push(replace.cloneNode(true));
}
}
node[i].replaceWith(span);
}
}
}
function getAddCode(code){//00100111 -> 00101000
code = code.split("");
for(let i = code.length-1;i >= 0; i--){
code[i] ^=1;
if(code[i])break;
}
return code.join("");
}
let headers = persons.reduce((a,b)=>a.concat(Object.keys(b)),[]).filter((v, i, s)=>s.indexOf(v) === i);
str = `<table border='1'><tr>${headers.map(e=>`<th>${e}</th>`).join("\n")}</tr>` + persons.map(e=>`<tr>${headers.map(e1=>`<td>${e[e1]?e[e1]:"-"}</td>`).join("\n")}</tr>`).join("\n")+`</table>`;
let dateStart = new Date("2021-03-01 12:00:00");//Дата с которой начался отсчет
let daysDelay = 10;//Количество дней акции
let msDelay = 1000*60*60*24*daysDelay;//Количество дней акции в мс
let now = Date.now();//Сейчас
let nextDate = new Date(dateStart.getTime()+Math.ceil((now - dateStart.getTime())/msDelay)*msDelay);//Искомая следующая дата
function sorted(id) {
for (var c = document.getElementById(id), b = c.options, a = 0; a < b.length - 1;) {
let l = parseFloat(b[a].value),
r = parseFloat(b[a + 1].value);
if (!isNaN(l) && !isNaN(r) && b[a + 1] && (l > r && l > 0 && r > 0) || (l < r && l < 0 && r < 0) || (l < 0 && r >= 0)) {
c.insertBefore(b[a + 1], b[a]);
a = a >= 1 ? a - 1 : a + 1
} else a++;
b[0].selected = true
}
};
sorted("26-disk");
// let data = {!! json_encode($arrRois) !!};
let month = data.map(e=>e.mouth);
let values = data.map(e=>e.sum);
xAxis: {
tickPixelInterval: 50,
categories: month, // сюда месяца
tickmarkPlacement: 'on',
labels: {
useHTML: true,
},
},
series: [{
name: '',
data: values, //как сюда засунуть sum
marker: {
enabled: false
}
}]
<button type="submit" id='btn'>Отправить</button>
document.querySelector("#form").addEventListener("submit",function(e){
let isValid = true;
//Какие-то проверки
if(!isValid)
e.preventDefault();//отмена
});
var data = `[ -----] system configuration
[ -----] system configuration save
[ -----] system configuration factory-reset
[ ---H-] system environment
[ n--H-] system environment set`;
console.log(data.split('\n').map(e=>e.replace(/\[.*\] (.*)/,"'$1'").split(" ").join(".")).join("|"))
if (e.target === document.getElementById('btn')) {
for ( let i = 0; i < input.length; i++ ) {
if (input[i].value === '')
return alert("Заполните все поля")
}
return alert("Все поля заполнены")
}
клиенту, естественно, верить нельзя
function changeCatalog(nameyeti) {
let wrap = document.querySelector('.table');
wrap.innerHTML = '';
data.forEach((item) => {
console.log(nameyeti)
console.log(item[nameyeti])
let content = `<div class="">${item[nameyeti].username}</div>`;
wrap.insertAdjacentHTML('beforeend', content);
})
}