Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выполнение JS после того как включен checkbox. (https://javascript.ru/forum/misc/79713-vypolnenie-js-posle-togo-kak-vklyuchen-checkbox.html)

III 13.03.2020 11:41

Выполнение JS после того как включен checkbox.
 
Всем привет. С JS не дружу, но надо. Имею скрипт из инета
var textNodes = [];
var textNodes_data = [];
var i=0;
function search_textNodes(b) {
    b = b.childNodes;
    for (var c = 0, d = b.length; c < d; c++) {
        var a = b[c];
        if (a.nodeType == 3) {
            textNodes.push(a);
            textNodes_data.push(a.data);
            a.data = ""
        } else a.hasChildNodes() && search_textNodes(a)
    }
};

его выполнение начинается с открытием страницы. Надо чтобы скрипт начал работать не с открытием страницы, а после включения checkbox.
Сheckbox имеет class="envelope__check". Желательно, чтобы ожидание начала работы скрипта, после включение checkbox, было секунды 2. Можно и без ожидания. Надеюсь для спецов это несложно.
Всем спасибо.

рони 13.03.2020 11:46

III,
если есть сомнение, в какой теме задать свой вопрос, пишите здесь Общие вопросы Javascript

voraa 13.03.2020 12:16

document.querySelector(".envelope__check").addEventListener('change', (ev) => ev.target.checked && setTimeout(()=>search_textNodes(???), 2000))


??? - тот элемент, где вам нужно искать текстовые узлы.
Вы не сказали, где

III 13.03.2020 13:16

Спасибо за быстрый ответ. Правильно ли я понял, что приведённую вами строку,
надо вставить первой в скрипте и в search_textNodes(???) вместо ??? вписать test, такой id у меня
отображается на странице.

III 13.03.2020 13:42

Спасибо за помощь. Ваша строка выводит сразу полностью содержание id test, мне надо чтобы содержимое печаталось, как в моём скрипте. Вот полностью скрипт
var textNodes = [];
var textNodes_data = [];
var i=0;

function search_textNodes(b) {
    b = b.childNodes;
    for (var c = 0, d = b.length; c < d; c++) {
        var a = b[c];
        if (a.nodeType == 3) {
            textNodes.push(a);
            textNodes_data.push(a.data);
            a.data = ""
        } else a.hasChildNodes() && search_textNodes(a)
    }
};

var d = document.getElementById('test');
search_textNodes(d);
function str_write() {
    var a = textNodes_data[i];
    if (a) {
        textNodes[i].data += a.charAt(0);
        textNodes_data[i] = a.substr(1)
    } else i++;
    i < textNodes.length && setTimeout(arguments.callee, 90)

};

str_write()

III 16.03.2020 09:07

Всем спасибо. Решение найдено. Тему можно закрыть.


Часовой пояс GMT +3, время: 02:54.