Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2016, 17:03   #1
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию Подскажите с кодом, плиз!

Код работает, добавил некоторые формулы и условия, то что добавил не работает. В кратце чего хочу, при нажатии галочки на chekbox появляются числа (2, 3, 4, 5) в зависимости от условия, но нужно так же чтобы к результату "result" прибавлялись числа (60, 90, 120, 150) в зависимости от числа (2, 3, 4, 5) т.е. если число 2 то к результату прибавляется 60 и т.д.
Код HTML:
<!doctype html>
<html lang="ru">
<head>
</head>
<body>
<select name="indexCombobox1" size="1" id="box">
<option value="500">А</option>
<option value="520">Б</option>
<option value="520">В</option>
<option value="560">Г</option>
<option value="650">Д</option>
</select>
<input type="number" id="editbox1" name="indexEditbox1" value="0.4" autocomplete="off" min="0.4" max="4" step="0.01" onkeyup="stCalc();">
<input type="number" id="editbox2" name="indexEditbox1" value="0.4" autocomplete="off" min="0.4" max="4" step="0.01">
<input type="button" id="button" name="" value="Расчет" onclick="Start();">
<div id="wb_rezult" class="style3">
<span style="color:#00FF00;font-family:'Times New Roman';font-size:21px;"><strong><em>Результат</em></strong></span></div>
<input type="checkbox" id="check" name="ck" value="on">
<div id="wb_zk" class="style3">
&nbsp;</div>
<script>
    function Start(){
    var chislo = document.getElementById('editbox1').value; 
        var chislo1 = document.getElementById('editbox2').value; 
    var spisok = document.getElementById('box').value; 
        var resultDiv = document.getElementById('wb_rezult');
        var result = 0;
if (chislo < 0.4 || chislo > 4) {
    alert('Ширина и Высота должны быть от 0,4 до 4 м!');
    } else if (chislo1 < 0.4 || chislo1 > 4) {
    alert('Ширина и Высота должны быть от 0,4 до 4 м!');
  } else {
    result = (chislo * chislo1 * spisok).toFixed(2);
    resultDiv.innerHTML = result;
  }
}
 
     resField = document.getElementById('wb_zk'),
     ckeckBox = document.getElementById('check'),
     resFieldFirstVal = resField.innerHTML,
     counts = [2, 3, 4, 5];
 
ckeckBox.addEventListener('change', showHideRes.bind());
ckeckBox.addEventListener('change', stCalc.bind());
ckeckBox.addEventListener('change', dtCalc.bind());//добавил
editbox1.addEventListener('input', stCalc.bind());
 
function showHideRes(elem) {
  if (ckeckBox.checked){
    resField.style.display = 'block';
  } else {
    resField.innerHTML = resFieldFirstVal;
    resField.style.display = 'none';
  }
}
 
function stCalc() {
  if (ckeckBox.checked) {
    if (editbox1.value >= 0.4 && editbox1.value <= 1.8) {
      resField.innerHTML = counts[0];
    } else if (editbox1.value >= 1.81 && editbox1.value <= 2.5) {
      resField.innerHTML = counts[1];
    } else if (editbox1.value >= 2.51 && editbox1.value <= 3.5) {
      resField.innerHTML = counts[2];
    } else if (editbox1.value >= 3.51 && editbox1.value <= 4) {
      resField.innerHTML = counts[3];
    }
  }
} 
 
function dtCalc() {
 s = [60, 90, 120, 150];//добавил
  if (ckeckBox.checked) {
  if (resField.innerHTML = counts[0]) {
  wb_result.innerHTML = (s[0] + +result).toFixed(2);//добавил
  } else if (resField.innerHTML = counts[1]) {
  wb_result.innerHTML = (s[1] + +result).toFixed(2);//добавил
  } else if (resField.innerHTML = counts[2]) {
  wb_result.innerHTML = (s[2] + +result).toFixed(2);//добавил
  } else if (resField.innerHTML = counts[3]) {
  wb_result.innerHTML = (s[3] + +result).toFixed(2);//добавил
   }
  }
}    
 
</script>
</body>
</html>

____
для форматирования на форуме можно использовать теги [CODE][ /CODE] или [HTML] [ /HTML]
Модератор
Еду медленно, но верно!

Последний раз редактировалось Serge_Bliznykov; 14.10.2016 в 17:10.
spoon100500 вне форума Ответить с цитированием
Старый 14.10.2016, 17:57   #2
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Советую нажимать F12 когда находишся на вэб странице, и выбирать вкладку console/консоль.

И перезапускать срипт. Как я и сделал. И сразу вылезла ошибка..

Твой код ничего не знает про "wb_result". Так как ты ему ничго про эту переменну не сказал.
PHP код:

function dtCalc() {

    
= [6090120150];//добавил
    
if (ckeckBox.checked) {
        if (
resField.innerHTML counts[0]) {
            
wb_result.innerHTML = (s[0] + +result).toFixed(2);//добавил
        
} else if (resField.innerHTML counts[1]) {
            
wb_result.innerHTML = (s[1] + +result).toFixed(2);//добавил
        
} else if (resField.innerHTML counts[2]) {
            
wb_result.innerHTML = (s[2] + +result).toFixed(2);//добавил
        
} else if (resField.innerHTML counts[3]) {
            
wb_result.innerHTML = (s[3] + +result).toFixed(2);//добавил
        
}
    }


Да и вообще, вот это не правильно потому что ты обращаешся к елементам разметки, которых еще может не быть. Нуж декларировать переменные в глобальной облости видимости, если они будут нужны, но присваивать им значения связанное с раеткой, только после полной загрузки всего DOMa.

Вот такой код будет безопастным и всегда рабочим.

PHP код:

    
<script>

    
// -----------------------------------------------------
        
var resFieldckeckBoxresFieldFirstVal;
        var 
chislochislo1spisokresultDivresult;
        var 
counts = [2345];

    
// -----------------------------------------------------
    // вот это может и будет создовать проблеммы, так как JS уже готов 
    // и отрабатывает, а HTML елемента с ID:MyId  еще нету,
    
var elem document.getElementById('MyId');

    
// -----------------------------------------------------
    
window.addEventListener('load', function(){

        
// это все начнет отрабатывать только после того как весь DOM будет готов

        
resField document.getElementById('wb_zk');
        
ckeckBox document.getElementById('check');

        
chislo document.getElementById('editbox1');
        
chislo1 document.getElementById('editbox2');

        
spisok document.getElementById('box');
        
resultDiv document.getElementById('wb_rezult');
        
result 0;


        
ckeckBox.onchange = function(){
            if( 
this.checked ){}
        }


        
chislo.onchange = function(){
            
console.logthis.value );
        }

        
chislo1.onchange = function(){
            
console.logthis.value );
        }

    });


    
</script> 
А вот такой, может привести к не исправному коду
PHP код:

resField 
document.getElementById('wb_zk'),
ckeckBox document.getElementById('check'),
resFieldFirstVal resField.innerHTML,
counts = [2345]; 
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 15.10.2016, 06:31   #3
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Твой код ничего не знает про "wb_result". Так как ты ему ничего про эту переменную не сказал.
var resultDiv = document.getElementById('wb_rezult' );
Сделал так, но не работает
Код:
function dtCalc() {
 var s = [60, 90, 120, 150];
  if (ckeckBox.checked) {
  if (resField.innerHTML = counts[0]) {
  resultDiv.innerHTML = (s[0] + +result).toFixed(2);
  } else if (resField.innerHTML = counts[1]) {
  resultDiv.innerHTML = (s[1] + +result).toFixed(2);
  } else if (resField.innerHTML = counts[2]) {
  resultDiv.innerHTML = (s[2] + +result).toFixed(2);
  } else if (resField.innerHTML = counts[3]) {
  resultDiv.innerHTML = (s[3] + +result).toFixed(2);
   }
  }
}
Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Вот такой код будет безопасным и всегда рабочим.
Цитата:
Сообщение от pompiduskus Посмотреть сообщение
А вот такой, может привести к не исправному коду
Спасибо услышал, исправлю, но пока хотелось бы разобраться с основной проблемой)))
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 15.10.2016, 06:34   #4
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Советую нажимать F12 когда находишься на вэб странице, и выбирать вкладку console/консоль.

И перезапускать скрипт. Как я и сделал. И сразу вылезла ошибка..
Можно поподробнее не понял как это сделать?
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 15.10.2016, 06:43   #5
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

Цитата:
Сообщение от spoon100500 Посмотреть сообщение
Можно поподробнее не понял как это сделать?
Все понял))) это через IE.
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 15.10.2016, 06:59   #6
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
Хорошо

Цитата:
Сообщение от spoon100500 Посмотреть сообщение
Спасибо услышал, исправлю, но пока хотелось бы разобраться с основной проблемой)))
Вы правы, посмотрел через отладчик, хорошая штука, знал бы раньше "чайник"))), надо привести все в порядок, буду работать, спасибо.
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 15.10.2016, 10:21   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от spoon100500 Посмотреть сообщение
Все понял))) это через IE.
Во всех браузерах это есть. (Chrome, FF, IE)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.10.2016, 11:19   #8
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Во всех браузерах это есть. (Chrome, FF, IE)
В Opera нет
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 15.10.2016, 11:27   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Если не по F12, то в меню по ПКМ должно быть.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.10.2016, 12:36   #10
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию Есть вопросы

Код:
<script>

    // Тут все понятно, присваиваем переменные-------------

        var resField, ckeckBox, resFieldFirstVal;
        var chislo, chislo1, spisok, resultDiv, result;
        var counts = [2, 3, 4, 5];

    // -----------------------------------------------------

   // Тут не совсем все ясно-"load-браузер загрузил все ресурсы", function()-тут не понял-и функции то же?     

       window.addEventListener('load', function(){

        // это все начнет отрабатывать только после того как весь DOM будет готов
        // тут понятно-переменным назначили id

        resField = document.getElementById('wb_zk');
        ckeckBox = document.getElementById('check');

        chislo = document.getElementById('editbox1');
        chislo1 = document.getElementById('editbox2');

        spisok = document.getElementById('box');
        resultDiv = document.getElementById('wb_rezult');
        result = 0;

// Тут не понял- ckeckBox будет выполнять функцию при нажатии, функции нужно присвоить имя? Вот сюда {} нужно вписать действие для условия?

        ckeckBox.onchange = function(){
            if( this.checked ){}
        }

// При вводе чисел в поле chislo выполняется функция с выводом результата console.log куда?

        chislo.onchange = function(){
            console.log( this.value );
        }

        chislo1.onchange = function(){
            console.log( this.value );
        }

    });


    </script>
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите плиз Alex26RusLink Общие вопросы C/C++ 10 21.07.2009 19:03
Подскажите, что не так с кодом Grisha248 Помощь студентам 2 24.05.2009 16:41
Подскажите плиз Panik666 Общие вопросы Delphi 1 22.04.2009 23:19
Подскажите с кодом процедуры ButtonClick KARUSHEV Помощь студентам 3 23.03.2009 14:01
подскажите плиз! Lestrini Общие вопросы Delphi 6 03.10.2008 17:23