Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает .onclick = function () в EI (https://javascript.ru/forum/misc/72614-ne-rabotaet-onclick-%3D-function-v-ei.html)

Arthur4400 12.02.2018 16:09

Не работает .onclick = function () в EI
 
Здравствуйте, не могу понять как сделать что бы значение с input type="number" отображалось на input type="range", и наоборот..Хотя в этом примере кода с input type="number" в input type="range" записывает, а наоборот нет...
<form>
    <p>Пакет стандарт <input id="standart" type="number" readonly value="7000"> грн./30 дней</p>
    <p>По умолчанию включает в себя 100 товаров и 100 сайтов!</p>
 
    <p>Количество товаров <input id="product" type="number" value="" min="0" placeholder="Количество товаров" onkeyup="addition();"> </p>
    <input id="product_scrol" type="range" min="0" max="300" step="1" value="0">
 
    <p>Количество сфйтов <input id="site" type="number" value="" min="0" placeholder="Количество сайтов" onkeyup="addition();"> </p>
    <input id="site_scrol" type="range" min="0" max="300" step="1" value="0">
 
    <p> Весь рынок <input  id="market" type="checkbox" value=""> 3000 грн.</p>
    <p>Иследуеться весь рынок! </p>
 
    <p>Рассылка о нарушениях <input  id="dispatch" type="checkbox" value=""> 2000грн. </p>
</form>
  
<div id="result"></div> <!--Блок вывода результата-->

<script>
function addition() {
    var standart = parseInt(document.getElementById('standart').value);//Пакет стандарт
    var product = parseInt(document.getElementById('product').value);//Количество товаров
    var site = parseInt(document.getElementById('site').value);//Количество сфйтов
    var market = parseInt(document.getElementById('market').value);//Услуга весь рынок
    var dispatch = parseInt(document.getElementById('dispatch').value);//Рассылка о нарушениях
 
    if (isNaN(standart) === true) standart = 0;
    if (isNaN(product) === true) product = 0;
    if (isNaN(site) === true) site = 0;
    if (isNaN(market) === true) market = 0;
    if (isNaN(dispatch) === true) dispatch = 0;
 
    var summ_market = product * 10; //сумма Количество товаров
    var summ_site = site * 50; //сумма Количество сфйтов
    var c = standart + summ_market + summ_site + market + dispatch; // подсчет всей суммы
 
    //ползунки
    if (document.getElementById('product').value > 0 ){
        document.getElementById('product_scrol').value = document.getElementById('product').value;    
    }
    if (document.getElementById('site').value != '') {
        document.getElementById('site_scrol').value = document.getElementById('site').value;
    }else{
        document.getElementById('site_scrol').value = 0;
    }
    //ползунки
    document.getElementById('market').checked = document.getElementById('market').value;// если включена услуга весь рынок
    document.getElementById('dispatch').checked = document.getElementById('dispatch').value;// если включена рассылка о нарушениях
    document.getElementById('result').innerHTML = " = " + c; // вывод конечной сумы
       //вывод суммы
}
document.getElementById('market').onclick = function () {
    if (this.checked) {
        document.getElementById('market').value = 3000;
        document.getElementById('site').value = "";
        document.getElementById('site').placeholder = "Все сайты";           //неактивное поле сыйты
        document.getElementById('site').disabled = true;
    }
    else {                                                                      // если выключена услуга весь рынок
        document.getElementById('market').value = '';
        document.getElementById('site').disabled = false;                                     // активация полей товары, сайты
        document.getElementById('site').placeholder = "Количество сайтов";
        document.getElementById('product').placeholder = "Количество товаров";
        document.getElementById('product').disabled = false; 
    }   
    addition();
};
     
document.getElementById('dispatch').onclick = function () {
    if (this.checked) {
        document.getElementById('dispatch').value = 2000;
    }
    else document.getElementById('dispatch').value = '';                    // если выключена рассылка о нарушениях
    addition();
};
</script>

ksa 12.02.2018 16:14

Цитата:

Сообщение от Arthur4400
Если может нужно больше кода то скину....

Нужно сделать полный тестовый пример и оформить его тут.
Как это сделать объясняется тут. ;)

Arthur4400 12.02.2018 16:27

Спасибо, изменил

Manyasha 12.02.2018 17:44

Arthur4400,
попробуйте так:
<form>
	<p>Пакет стандарт <input id="standart" type="number" readonly value="7000"> грн./30 дней</p>
	<p>По умолчанию включает в себя 100 товаров и 100 сайтов!</p>

	<p>Количество товаров <input id="product" type="number" value="" min="0" placeholder="Количество товаров" onkeyup="addition();"> </p>
	<input id="product_scrol" type="range" min="0" max="300" step="1" value="0">

	<p>Количество сфйтов <input id="site" type="number" value="" min="0" placeholder="Количество сайтов" onkeyup="addition();"> </p>
	<input id="site_scrol" type="range" min="0" max="300" step="1" value="0">

	<p> Весь рынок <input  id="market" type="checkbox" value=""> 3000 грн.</p>
	<p>Иследуеться весь рынок! </p>

	<p>Рассылка о нарушениях <input  id="dispatch" type="checkbox" value=""> 2000грн. </p>
</form>
 
<div id="result"></div> <!--Блок вывода результата-->
<script>
function addition() {
    var standart = parseInt(document.getElementById('standart').value);//Пакет стандарт
    var product = parseInt(document.getElementById('product').value);//Количество товаров
    var site = parseInt(document.getElementById('site').value);//Количество сфйтов
    var market = parseInt(document.getElementById('market').value);//Услуга весь рынок
    var dispatch = parseInt(document.getElementById('dispatch').value);//Рассылка о нарушениях

    if (isNaN(standart) === true) standart = 0;
    if (isNaN(product) === true) product = 0;
    if (isNaN(site) === true) site = 0;
    if (isNaN(market) === true) market = 0;
    if (isNaN(dispatch) === true) dispatch = 0;

    var summ_market = product * 10; //сумма Количество товаров
    var summ_site = site * 50; //сумма Количество сфйтов
    var c = standart + summ_market + summ_site + market + dispatch; // подсчет всей суммы

    //скролы
   // if (document.getElementById('product').value > 0 ){
        document.getElementById('product_scrol').value = document.getElementById('product').value;     
   // }
    if (document.getElementById('site').value != '') {
        document.getElementById('site_scrol').value = document.getElementById('site').value;
    }else{
		document.getElementById('site_scrol').value = 0;
	}
    //скролы
    document.getElementById('market').checked = document.getElementById('market').value;// если включена услуга весь рынок
	document.getElementById('dispatch').checked = document.getElementById('dispatch').value;// если включена рассылка о нарушениях
    document.getElementById('result').innerHTML = " = " + c; // вывод конечной сумы
       //вывод суммы
}
document.getElementById('market').onclick = function () {
	if (this.checked) {
		document.getElementById('market').value = 3000;
		document.getElementById('site').value = "";
		document.getElementById('site').placeholder = "Все сайты";           //неактивное поле сыйты
		document.getElementById('site').disabled = true;
	}
	else {                                                                      // если выключена услуга весь рынок
		document.getElementById('market').value = '';
		document.getElementById('site').disabled = false;                                     // активация полей товары, сайты
		document.getElementById('site').placeholder = "Количество сайтов";
		document.getElementById('product').placeholder = "Количество товаров";
		document.getElementById('product').disabled = false;  
	}    
	addition();
};
    
document.getElementById('dispatch').onclick = function () {
	if (this.checked) {
		document.getElementById('dispatch').value = 2000; 
	}
	else document.getElementById('dispatch').value = '';                    // если выключена рассылка о нарушениях
	addition(); 
};
</script>

Arthur4400 13.02.2018 14:15

спасибо, работает:stop: !!! ну вот есть еще один вопрос когда ввожу в inpun число в input=range отображается, а если сдвинуть input=range, то в input ничего не меняеться...

j0hnik 13.02.2018 14:23

у input=range нет обработчиков.

Arthur4400 13.02.2018 15:09

Цитата:

Сообщение от Manyasha
попробуйте так

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

Arthur4400 13.02.2018 15:21

Цитата:

Сообщение от j0hnik (Сообщение 478002)
у input=range нет обработчиков.

А что в обработчик написать?:haha: :agree: :(

ksa 13.02.2018 15:37

Цитата:

Сообщение от Arthur4400
когда все в одном файле работает а когда в разных файлах то ни в каком браузере на чекбоксы вообще не реагирует

Наверное не в том месте подключаешь js-файл... Или УРЛ ему не верный пишешь...

ksa 13.02.2018 15:39

Цитата:

Сообщение от Arthur4400
нужно наверное в input checkbox добавить обращение к нужной функции...ток не знаю как правильно

Учебники читать нужно для этого... ;)
https://learn.javascript.ru/introduction-browser-events


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