Найден баг,не работает поиск на странице корректно после вставки функции
window.setTimeout(function(){
var newEl = document.createElement('div');
newEl.id = "current";
newEl.style.cssText = "display:none";
var tbl = document.querySelector("#knack-logo");
if(tbl == null){
return false
}
else{
tbl.before(newEl);
}
},2000)
window.setInterval (function(){
var newEl = document.querySelector('#current')
if(newEl == null){
return false
}
else{
var elems = document.querySelectorAll('tr');
for(var i = 0; i < elems.length; i++) {
(function(i) {
var elem = elems[i];
var z = document.getElementById('current');
elem.onclick = function() {
var id = elem.getAttribute("id");
console.log(id);
// $('tr').css('border', '1px solid #dbdbdb');
$('tr').css('background', 'none');
z.innerText = id;
};
setInterval(function (){
if(elem.id === z.innerText & elem.id !== "") {
//$(elem).css('border', '3px solid black');
$(elem).css('background', 'aquamarine');
}
},1000);
})(i);
}}
},100);
Цель данной функции подсветка текущего рядка таблицы.Есть таблица,в каждую ячейку можно внести данные и потдвердить.При сабмите таблица выпадает из html и генерируется новая.Что то типо аякса,точно не знаю. Что может выззвать баг - при нажатии ctrl+f и поиска на странице начинает искать спустя минуту условно и ищет каждый новый элемент спустя тоже минуту.
Ответы (2 шт):
Автор решения: Андрій Мосін
→ Ссылка
window.setTimeout(function () {
var newEl = document.createElement('div');
newEl.id = "current";
newEl.style.cssText = "display:none";
var tbl = document.querySelector("#knack-logo");
if (tbl == null) {
return false
}
else {
tbl.before(newEl);
}
}, 4000)
window.setTimeout(function () {
var z = document.getElementById('current');
if (z == null) {
return false
}
else {
window.setInterval(function () {
var elems = document.querySelectorAll('tr');
for (var i = 0; i < elems.length; i++) {
(function (i) {
var elem = elems[i];
if (elem.id === z.innerText & elem.id !== "") {
//$(elem).css('border', '3px solid black');
$(elem).css('background', 'aquamarine');
}
//При клике
elem.onclick = function () {
var id = elem.getAttribute("id");
console.log(id);
// $('tr').css('border', '1px solid #dbdbdb');
$('tr').css('background', 'none');
z.innerText = id;
};
})(i);
}
}, 1000)
}//else
}, 3000)
Автор решения: Vadim
→ Ссылка
С днем рожденьем земли батя, с 99 чем-то летием, наконец-то нашей земле исполнилось 2020 лет
Ты уверен, что таймер, который вешает клик каждую секунду, это хорошая идея?
const sleep=(ms)=>new Promise((r)=>setTimeout(r, ms));
const init=async()=>{
while($('#current').length === 0){
await sleep(1000);
$('#knack-logo').before(`<div id="current" style="display:none;"></div>`);
}
doIt();
// setInterval(doIt, 1000); // are you sure?
};
const doIt=()=>{
const $zet = $('#current');
if($zet.length === 0)return false;
for(const elem of $('body').find('tr')){
const $el = $(elem);
if($el.attr('id') === $zet.text() && $el.attr('id') !== ''){
$el.css('background', 'aquamarine');
}
$el.click(({currentTarget})=>{
const id = $(currentTarget).attr('id');
console.log(id);
$('tr').css('background', 'none');
$zet.text(id);
});
}
};
window.onload=()=>init();