Счетчик с кнопкой html

Повесить счётчик на кнопку

и надо на нее повесить счётчик чтоб значение количества нажатий выводил в консоль.

на просторах интернета нашел пример:

описание кнопки заданно как :

li> button class="btn">Button/button> span class="cnt">0/span> /li>
document.querySelectorAll('ul .btn') .forEach(function(el){ el.onclick = function() { let cnt = this.closest('li').querySelector('.cnt'); cnt.innerText = parseInt(cnt.innerText, 10)+1; }; });

не могу переделать под свои нужды. попробовал вот так вот и выполнить в консоли браузера, но ничего не получается.
пробовал выполнить в расширении Tampermonkey (желательно что работало в Tampermonkey), но все равно не работает.

прикладываю скрипт который сам передела и прошу указать на ошибки и направить по правильному пути .

var A = 0; // задаем переменную в которой будем вести счёт и которую будем выводить в консоль document.querySelectorAll('div .btn') // я так понимаю ищет все имеет класс btm внутри div .forEach(function(el){ el.onclick = function() { // я так понимаю здесь обработчик события клик при нажатии на кнопку выполняется функция let cnt = this.closest('div').querySelector('amber-button amber-button_theme_accent amber-button_size_m'); // здесь не очень понимаю, но скорее всего здесь ошибка A + 1; // приплюсовываем значение при нажатии console.log( A ); // выводим значение в консоль }; })

Button.onclick — как повесить на кнопку последовательные события?
Привет, есть вот такой код. Тут 5 блоков (стили в отдельном css файле). Задача, поменять цвет.

JavaScript+JQuery! Как повесить функцию обновления страницы на эту же нажатую кнопку, которая имеет другую функцию?
я понимаю что звучит очень странно, НО! по пунктам: 1. есть кнопка С функцией А 2. при нажатии на.

Читайте также:  Защита от изменения html

Поставить счетчик, сколько раз нажали на эту кнопку
Я начинающий программист на javascript опыта почти не имею. Создал сайт на html и хочу поставить .

$(document).ready(function() { var $btn = $(".btn"); var $cnt = $(".cnt"); $btn.click(function() { $cnt.html(parseInt($cnt.html()) + 1) }); });
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
 html> head> title>title>  --> head> body> div>span class="btn">BUTTONspan>div> script type="text/javascript"> "use strict"; var a = 0; // задаем переменную в которой будем вести счёт и которую будем выводить в консоль document.querySelector('div .btn').addEventListener("click", () => { a += 1; // приплюсовываем и присваиваем значение к переменной (а) при нажатии console.log(a); // выводим значение переменной в консоли (а) }); script> body> html>

вставил и в расширение и в консоль хрома, в консоли хрома выдал ошибку.

script type="text/javascript"> "use strict"; var a = 0; // задаем переменную в которой будем вести счёт и которую будем выводить в консоль document.querySelector('div .btn').addEventListener("click", () => { a += 1; // приплюсовываем и присваиваем значение к переменной (а) при нажатии console.log(a); // выводим значение переменной в консоли (а) }); script>

document.querySelector(‘div .btn’).addEventListener(«click», () => < правильно ли я понимаю эту строчку, в документе ищем значение "кнопка" внутри "div" . и при выполнении действия "click" что то делаем . не очень понятна вот эта вещь. я так понимаю это так кратко функция задается ?

ЦитатаСообщение от dm_pimkin Посмотреть сообщение

script src="https://code.jquery.com/jquery-3.4.1.min.js">/script>

ага понятно. это внешняя библиотека, но как ее подключить в расширении для браузера я не нашел. поможете ? я просто недавно нчал разбираться во всем этом )

Лучший ответ

Сообщение было отмечено dm_pimkin как решение

Решение

let controls = document.querySelector('.Controls__content'); // получаем div с классом Controls__content let btn = controls.querySelector('.amber-button'); // получаем кнопку с классом amber-button из div'a, который получили выше let counter =0;// создаём переменную для счётчика btn.addEventListener('click', function(){ // вешаем событие клика на полученную кнопку counter += 1; // при каждом срабатывании события клика к счётчику будет добавляться +1 console.log(counter); // вывод счётчика в консоль });

оооо да, работает с первого раза )спасибо )

а еще такой вопрос тогда, если не сложно ?)

label class="Status__control amber-radio amber-radio_checked"> input class="amber-radio__control" type="radio" name="status"> span class="amber-radio__radio"> /span> span class="amber-radio__text">1/span> /label>

надо узнать какой из них выбран. нашел код на просторах интерента. и надо в отдельнотси считать каждый радиобокс при нажатии на кнопку ( счёт по которой идет. )
нашел код выглядит так:

function fun1() { var rad=document.getElementsByName('r1'); for (var i=0;irad.length; i++) { if (rad[i].checked) { alert('Выбран '+i+' radiobutton'); } } }

в примере на сайте http://w3.org.ua/js/rabota-s-e. tton-v-js/ работает прекрасно а у меня не работает не подскажите в чем проблема ? могу полностью прислать страницу если понадобиься чтоб было полное понимание того что нужно делать.

var rad=document.getElementsByName(‘r1’); — в этой строке ошибка

У твоего input в атрибуте name стоит status

input class="amber-radio__control" type="radio" name="status">

То есть в итоге у тебя должна получиться строчка

var rad=document.getElementsByName('status');

Ну а так, если у тебя несколько чекбоксов с классом amber-radio__control,то я бы лучше заменил на вот эту строчку

var rad =document.querySelectorAll('.amber-radio__control');
var rad =document.querySelectorAll('.amber-radio__control');

а эта строка создает массив и с ним надо работать как с массивом ? то есть поэлементно перебирать и когда статус будет выполнен то это порядковый номер элемента который нам нужен. и тогда возвращаем номер и узнаем который из них был нажат. примерно так да работать должно ?

Да.
Только надо будет создать кнопку и повесить на неё событие клика в котором вызывается эта функция

ага попробую сегодня соединить этих двух бегемотов чтоб все заработало ) спасибо ) если что я аукну ?

Аукай, помогу, чем смогу. Только смотри чтобы твоё обучение не перешло в простой copypaste кода.
На личном опыте случалось уже.

спасибо за помощь ) В итоге получился такой код который работает как надо и как хотелось )

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
// ==UserScript== // @name klicker // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @grant none // @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js // ==/UserScraipt== let Rad = 0; // сообщает какой радиобокс выбран let performed = 0; // счётчик выполненого (порядковый номер 1) let expectation = 0; // счётчик ожидание (порядковый номер 2 ) let counter = 0; // счётчик нажатий // функция фиксирующая нажатие function press ( ){ let controls = document.querySelector('.Controls__content'); // получаем div с классом Controls__content let btn = controls.querySelector('.amber-button'); // получаем кнопку с классом amber-button из div'a, который получили выше btn.addEventListener('click', function(){ // вешаем событие клика на полученную кнопку counter += 1; if (Radio() == 0) {performed += 1}; if (Radio() == 1) {expectation += 1}; conclusion(counter, performed, expectation); }); } // узнаем порядковый номер радиобокса и передаем function Radio ( ) { var rad = document.querySelectorAll('.amber-radio__control'); for (var i=0;irad.length; i++) { if (rad[i].checked) { //console.log(" функция Radio:" + i) return i; } } } // вывести в консоль всего нажатий, из них в статусе выполнено / ожидание ( в функцию передается 3 параметра: всего нажатий, в статусе выполнено, в статусе ожидания. function conclusion (counter, performed, expectation ){ console.log("Всего нажатий:" + counter + " Выполнено:" + performed + " Ожидание:" + expectation); }

теперь встала другая задача, при закрытии браузера или страницы, ее перезагрузки или еще каких то факапав счётчик обнуляется. нужно чтоб он не обнулялся, а проверялся. то есть сделал 50 нажатий, закрыт браузер. через 5 мин открыл начал нажимать, а он тебе дальше считает, а не по новой. подскажите про какие функции почитать, чтоб реализовать данную задумку.

думал делать через куки. но может кто то знает более приятное решение. спасибо

Добавлено через 19 минут
или использовать методы window.sessionStorage и window.localStorage ?

итак. есть продвижения по моему скрипту

в итоге получается такой код:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
// ==UserScript== // @name klicker // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @grant none // @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js // ==/UserScript== press (); // функция фиксирующая нажатие function press ( ){ let counter = 0; // счётчик нажатий let performed = 0; // счётчик выполненого (порядковый номер 1) let expectation = 0; // счётчик ожидание (порядковый номер 2 let controls = document.querySelector('.Controls__content'); // получаем div с классом Controls__content let btn = controls.querySelector('.amber-button'); // получаем кнопку с классом amber-button из div'a, который получили выше btn.addEventListener('click', function(){ // вешаем событие клика на полученную кнопку counter += 1; if (radio() == 0) {performed += 1}; if (radio() == 1) {expectation += 1}; conclusion(counter, performed, expectation); storage(counter, performed, expectation); }); } // узнаем порядковый номер радиобокса и передаем function radio ( ) { var rad = document.querySelectorAll('.amber-radio__control'); for (var i=0;irad.length; i++) { if (rad[i].checked) { //console.log(" функция Radio:" + i) return i; } } } // вывести в консоль всего нажатий, из них в статусе выполнено / ожидание ( в функцию передается 3 параметра: всего нажатий, в статусе выполнено, в статусе ожидания. function conclusion (counter, performed, expectation ){ console.log("Всего нажатий:" + counter + " Выполнено:" + performed + " Ожидание:" + expectation); } //функция записи в файл значений, на случай закрытия страницы или браузера function storage (counter, performed, expectation ){ localStorage.setItem('counter', counter); localStorage.setItem('performed', performed); localStorage.setItem('expectation', expectation); //console.log("storage - нажатий:" + counter + "выполнено:" + performed + "ожидание" + expectation ); } //функция проверки файла на предыдущие значения function inspection ( ){ let counter = 0; //переменная для хранения переменных let performed = 0; //переменная для записи выполнено let expectation = 0; //переменая для записи в ожидании if(localStorage.getItem(counter)!=0){ counter = localStorage.getItem(counter); //получаем значение в поле нажатия performed = localStorage.getItem(performed); //получаем значение в поле выполнено expectation = localStorage.getItem(expectation); //получаем значение в поле ожидание //console.log("inspection - нажатий:" + counter + "выполнено:" + performed + "ожидание" + expectation); return [counter, performed, expectation]; //возвращаем 3 значения как массив } else { return [0, 0, 0]; //если значение не найдены, то возвращаем 3 нуля тем самым обнуляя счётчики //console.log("выполнена функция inspection, значения не найдены); } }

в нем присутствует функция inspection. хочу делать проверку хранящихся в файле данных. мне с нее надо вернуть 3 значения: return [counter, performed, expectation];, правильно ли я понимаю, что будет возвращен массив с 3 элементами и с ними надо работать как с массивом. то есть, если я захочу сохранить их в другую переменную то надо составлять конструкцию на подобии let a = inspection [0] где будет храниться значение counter и так для 3 значений. ?

спасибо за помощь и наставления. )

и вообще как код выглядит? вроде постарался делать красиво и расписывать каждую функцию, все что можно было вынести в отдельную функцию вынес.

Источник

Оцените статью