Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.10.2015, 23:00
Аспирант
Отправить личное сообщение для Ermite Посмотреть профиль Найти все сообщения от Ermite
 
Регистрация: 20.10.2015
Сообщений: 32

Двойное условие и чекбокс
Столкнулся с такой проблемой. Нужно так, чтобы при включенном 1-м чекбоксе введенное число умножалось, допустим, на 2. При 2м чекбоксе на 3, а если включены оба сразу, то на 4. Если оба выключены, то число оставалось без изменений.

<html>
<head>
<script>
function show_alert()
{

  if (G1.checked)
  { 
    www.value=qqq.value*2;
	}
  else if (G2.checked)
  {
    www.value=qqq.value*3;
  }
  else if (G1.checked && G2.checked)
  {
    www.value=qqq.value*4;    
  }
  else {
      www.value=qqq.value;
  }
}

</script>
</head><body>
<input id="qqq">
<input type="checkbox" id="G1"> <input type="checkbox" id="G2">
<input type="button" value="Go! " onclick="show_alert()">
<br>
<input id="www">
</body>
</html>


Все, вроде, работает, но когда я активирую оба чекбокса, то введенное число умножается на 2, а не на 4.
Ответить с цитированием
  #2 (permalink)  
Старый 20.10.2015, 23:07
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

ну наверное надо начинать проверку обратным образом: сначала оба чекбокса, потом по одному и на остаток если ничего не выбрано
Ответить с цитированием
  #3 (permalink)  
Старый 20.10.2015, 23:08
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

учитывайте все варианты. Т.е

if (G1.checked && !G2.checked)
  {
    [url]www.value=qqq.value*2;[/url]
    }
  else if (!G1.checked && G2.checked)
  {
    [url]www.value=qqq.value*3;[/url]
  }


Либо как сказал EmperioAf
Ответить с цитированием
  #4 (permalink)  
Старый 20.10.2015, 23:10
Аспирант
Отправить личное сообщение для Ermite Посмотреть профиль Найти все сообщения от Ermite
 
Регистрация: 20.10.2015
Сообщений: 32

Помогло) Не знал, что от порядка что-то зависит.. Никто в обучалках даже не упомянул про это
Ответить с цитированием
  #5 (permalink)  
Старый 20.10.2015, 23:26
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Ermite, а подумайте логически под какое условие попадает g1 && g2

function f(a,b) {
	if (a) {
    	alert('a: true');
    }
    else if (b) {
    	alert('b: true');
    }
    else if(a && b) {
    	alert('a: true, b: true');
    }
    else {
    	alert('something else');
    }
}

f(true, false); // a true
f(false, true); // b true
f(true, true); // a true
f(false, false); // something else
Ответить с цитированием
  #6 (permalink)  
Старый 20.10.2015, 23:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124


<!DOCTYPE HTML>
<html>
<head>
<script>
function show_alert()
{
   www.value=qqq.value*[[1,3],[2,4]][+G1.checked][+G2.checked];
 }

</script>
</head><body>
<input id="qqq">
<input type="checkbox" id="G1"> <input type="checkbox" id="G2">
<input type="button" value="Go! " onclick="show_alert()">
<br>
<input id="www">
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 21.10.2015, 01:09
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

Сообщение от рони Посмотреть сообщение
ахереть
Ответить с цитированием
  #8 (permalink)  
Старый 25.10.2015, 16:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Ermite,
вариант для любого количества checkbox
<!DOCTYPE HTML>
<html>
<head>
<script>
function show_alert()
{
  var www = document.querySelector('#www'),
  qqq = document.querySelector('#qqq'),
  check = document.querySelectorAll('[type="checkbox"]'),
  result = [].reduceRight.call(check,function(num, current) {
  return num + +current.checked;
}, '');
  result = parseInt(result, 2);
  result++;
  www.value=qqq.value * result

}

</script>
</head><body>
<input id="qqq">
<input type="checkbox" >1 <input type="checkbox" >2 <input type="checkbox" >4 <input type="checkbox" >8
+=1
<input type="button" value="Go! " onclick="show_alert()">
<br>
<input id="www">
</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 26.10.2015, 00:02
Аспирант
Отправить личное сообщение для Ermite Посмотреть профиль Найти все сообщения от Ermite
 
Регистрация: 20.10.2015
Сообщений: 32

рони,
Спасибо) Можно ли как-нибудь присвоить свои значения всем чекбоксам?
Я вот сделал по-своему)
<!DOCTYPE HTML>
<html>
<head>
<script>
function show_alert()
{
  if (G1.checked) {
  g11=300;
  } else {
  g11=0;
  }

    if (G2.checked) {
  g22=500;
  } else {
  g22=0;
  }
    if (G3.checked) {
  g33=1000;
  } else {
  g33=0;
  }
    if (G4.checked) {
  g44=1500;
  } else {
  g44=0;
  }
  
  www.value=qqq.value*1 + g11*1 + g22*1 + g33*1 + g44*1;
  
}

</script>
</head><body>
<input id="qqq">
<input type="checkbox" id="G1">1 <input type="checkbox" id="G2">2 <input type="checkbox" id="G3">4 <input type="checkbox" id="G4">5

<input type="button" value="Go! " onclick="show_alert()">
<br>
<input id="www">
</body>
</html>


Как всегда громоздко и примитивно, но зато работает) Только беда в том, что чекбоксов у меня будет около 20 и код получится слишком уж большим для относительно маленькой функции)
Ответить с цитированием
  #10 (permalink)  
Старый 26.10.2015, 00:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от Ermite
Можно ли как-нибудь присвоить свои значения всем чекбоксам?
не осилил
4 чекбокса - 16 вариантов -- напишите их все по порядку в arr = [] или arr = {} и выбирайте arr[result]
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЧекБокс по ссылке, но не работает другой скрипт qwe88 Общие вопросы Javascript 6 11.10.2016 12:00
Условие if помогите с условием skoch244 Общие вопросы Javascript 2 24.08.2015 13:38
Не выполняется условие if cooldanie Общие вопросы Javascript 12 17.01.2014 01:01
Свой чекбокс на скрипте Олег123 Элементы интерфейса 5 06.11.2012 17:19
Условие типа для flv nemo Серверные языки и технологии 1 29.01.2010 17:52