# Примеры JavaScript

ВНИМАНИЕ!

Этот документ требует базовых навыков программирования.

# Удалить не нужное и принять использование куков, режим работы "Снимок браузера".

Этот скрипт, после загрузки страницы, удаляет с нее все не нужное и нажимает кнопку "принять использование куков".

// Находит кнопку принять использование куков и нажимает ее
function cookieAccept() {
  let btn = document.getElementsByClassName('cookie_accept')[0]; //элемент кнопка принять использование куков
  if (btn && (btn.offsetParent != null)) KeenVision.clickElement(btn); //жмем кнопку принять использование куки
}

/**
* Удаляет у элемента parent все дочерние элементы за исключением заданных.
*
* @param {Object} parent - элемент.
* @param {Object[]} keepChildren - массив сохраняемых элементов,
* в массиве можно указать: дочерний элемент, номер дочернего элемента, начало текста innerHTML дочернего элемента
* @returns {Object} parent
*/
function rmChExcept( parent, keepChildren) {
  if (parent) {
     const cn = parent.children;
     for (var i = cn.length -1 ; i >=0 ; i--) {
        let found = false;
        for (var j = 0 ; j < keepChildren.length ; j++) {
            const kc = keepChildren[j];    
            if (kc == cn[i] || kc == i || (typeof kc === 'string' && cn[i].innerHTML && cn[i].innerHTML.startsWith(kc)) ) {
//              alert(i + " tn=" +cn[i].tagName + " " +cn[i].innerHTML)
              found = true;
              break;
            }
        }
        if (!found) parent.removeChild( cn[i] );
     }
  }
  return parent;
}

/**
* Удаляет у элемента parent заданные дочерние элементы.
*
* @param {Object} parent - элемент.
* @param {Object[]} remChildren - массив удаляемых элементов, 
* в массиве можно указать: дочерний элемент, номер дочернего элемента, начало текста innerHTML дочернего элемента
* @returns {Object} parent
*/
function rmCh( parent, remChildren) {
  if (parent) {
     const cn = parent.children;
     for (var i = cn.length -1 ; i >=0 ; i--) {
        for (var j = 0 ; j < remChildren.length ; j++) {
            const kc = remChildren[j];    
//             alert(i + " tn=" +cn[i].tagName + " " +cn[i].innerHTML)
            if (kc == cn[i] || kc == i || (typeof kc === 'string' && cn[i].innerHTML && cn[i].innerHTML.startsWith(kc))) {
              parent.removeChild( cn[i] );
              break;
            }
        }
     }
  }
  return parent;
}


function kvmain() {

  const main = document.getElementsByTagName('sameElement')[0];
  if (!main) return "waitPageReady"; //ожидаем загрузки всех элементов страницы

  //у нулевого элемента c классом "tour-desc" удаляем все дочерние элементы кроме заданных
  rmChExcept(document.getElementsByClassName('tour-desc')[0], [ document.getElementById('tour-reg-list'), 'Дата:', '<strong>Система проведения:' ]);

  //у нулевого элемента c классом "tour-results" удаляем все картинки
  var res = rmCh(document.getElementsByClassName('tour-results')[0], document.getElementsByTagName('img'));
  //у этого же элемента удаляем первый дочерний элемент, и элемент с текстом начинающимся на "Клуб: "
  rmCh(res, [1, 'Клуб: ');

  //через 500мс принять использование куков
  setTimeout(function() {cookieAccept();}, 500);

  //сделать снимок браузера через 1000мс
  setTimeout(function() {KeenVision.pageReady();}, 1000);

  return "waitPageReady"; //сообщаем что нужно ждать вызова KeenVision.pageReady 
}

kvmain();

Для отладки используйте функцию alert