Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с умножением списка на чекбокс (https://javascript.ru/forum/misc/13039-pomogite-s-umnozheniem-spiska-na-chekboks.html)

Resident 14.11.2010 00:46

Спасибо вам, уважаемый!
совсем забыл про онклик для тупого ie =)
но ещё один момент, в ie и только в нём значение, в моём коде, становится равным нулю не могли бы подсказать что и как. я кончено могу по вашему сделать всё, но убить ещё пол дня на то что бы разобраться в нём уже не хватит сиил

monolithed 14.11.2010 01:12

У вас изначально значение берется из value, но потом оно теряется, а точнее становится значением переменной t. Если ее убрать, то сохраняется начальное значение. Но вам нужно чтобы значение менялось, для этого нужно чтобы обработчик события onchange постоянно проверял (имело активное) его наличие.

Посмотрите как у меня это реализовано:

select1.onchange = function(){
     for(var i=0; i<this.length; i++){
           var options = document.createElement("option");
           select2.appendChild(options);
           *!*span.innerHTML = select2.options[select2.selectedIndex].innerHTML;*/!*
    }
};
 
select2.onchange = function(){
     for(var j=0; j<this.length; j++){
           *!*span.innerHTML = this.options[this.selectedIndex].innerHTML;*/!*
     }
};

Resident 14.11.2010 01:16

блиииин ничё не понятно. завтра с утра лучше поразбираюсь

рони 14.11.2010 02:12

monolithed,
на всякий случай )))
while(select2.childNodes.length>0){
                select2.removeChild(select2.childNodes[select2.childNodes.length-1]);
            }

можно сократить до
select2.options.length=0;

Resident 14.11.2010 13:27

сделал как то так, всё равно не то :-?
function getCost(frm) {
   var oplata = document.getElementById('names').value ;
   var strana = document.getElementById('level').value ;
 var rez = 0;
 var norez = 0;
var  t = 0;

 oplata.onchange = function(){
	         for(var  i = 0; i<this.length; i++){

if (oplata == "2 раза 240 ТЕСТ" && strana == "Россия") {t=1};
if (oplata == "3 раза 250" && strana == "Россия") {t=250};
if (oplata == "1 раз 12р." && strana == "Россия") {t=12};
if (oplata == "1 раз 10р." && strana == "Франция") {t=10};
if (oplata == "2 раза 40" && strana == "Франция") {t=40}; 
if (oplata == "3 раза 50" && strana == "Франция") {t=50};
if (oplata == "2 раза 2140" && strana == "Турция") {t=2140};
if (oplata == "3 раза 2150" && strana == "Турция") {t=2150}; 
if (oplata == "2 раза 340" && strana == "Германия") {t=340};
if (oplata == "3 раза 350" && strana == "Германия") {t=350};
}}

norez = t;
rez = 2*t;
   if (frm.dop.checked == true) {document.getElementById('result').innerHTML = rez  }else{   document.getElementById('result').innerHTML = norez};}

рони 14.11.2010 15:04

Resident,
Пример: Проглотить не думая или разобраться
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<title></title>
<script>
var strana = {
 "Франция" : ['1 раз 10р.', '1 раз 10р.', '2 раза 40', '3 раза 50'],
 "Россия" : ['1 раз 12р.', '2 раза 240 ТЕСТ','3 раза 250'],
 "Турция" : ['2 раза 2140','3 раза 2150'],
 "Германия" : ['2 раза 340','3&nbsp;раза&nbsp;350'] }

function showNames(v){
    var mas = strana[v];
    var el = document.getElementById('names');
    el.options.length=0;
        for(var i=0;i<mas.length;i++){
        var opt = document.createElement("option");
        opt.appendChild(document.createTextNode(mas[i]));
        el.appendChild(opt);
    }
}

function getCost(frm) {
var oplata = document.getElementById('names');
oplata=oplata.options[oplata.selectedIndex].text;
var strana = document.getElementById('level');
strana=strana.options[strana.selectedIndex].text;
var rez = 0;
var t = 6663;
var norez = 0;
if (oplata == "2 раза 240 ТЕСТ" && strana == "Россия") {t=1};
if (oplata == "3 раза 250" && strana == "Россия") {t=250};
if (oplata == "1 раз 12р." && strana == "Россия") {t=12};
if (oplata == "1 раз 10р." && strana == "Франция") {t=10};
if (oplata == "2 раза 40" && strana == "Франция") {t=40};
if (oplata == "3 раза 50" && strana == "Франция") {t=50};
if (oplata == "2 раза 2140" && strana == "Турция") {t=2140};
if (oplata == "3 раза 2150" && strana == "Турция") {t=2150};
if (oplata == "2 раза 340" && strana == "Германия") {t=340};
if (oplata == "3 раза 350" && strana == "Германия") {t=350};

norez = t;
rez = 2*t;

if (frm.dop.checked == true) {document.getElementById('result').innerHTML = rez  }
else{   document.getElementById('result').innerHTML = norez};

}
</script>
</head>

<body onload="showNames('Франция')">
<form method="GET" name="formaa" id="txt" class="application" accept-charset="utf-8"  action="" >
<select name="strana" id="level" onchange="showNames(this.value); getCost(this.form)">
<option  value="Россия">Россия</option>
<option selected value="Франция">Франция</option>
<option  value="Турция">Турция</option>
<option  value="Германия">Германия</option>
</select>

<select name="cena" id="names" onChange="getCost(this.form)"></select>
<input type="checkbox" name="dop" id="checkbox_0" value="0.2" onclick="getCost(this.form)"  checked> Записывать звонки?<br>
<br>Стоимость
</form>
<table><tr><td id="result"></td></tr></table>
</body>
</html>

Resident 14.11.2010 21:07

Рони, я вас не совсем понял. помогите пожалуйста мне ктонибудь что бы с ie этот код работал. monolithed мне подсказал, но в силу своих скромных знаний по яве я не сумел разобраться

monolithed 14.11.2010 21:25

Чем вас не устраивает пример рони?

Resident 14.11.2010 22:38

простите пожалуйста меня за маю невнимательность :) просмотрел что есть код
Спасибо вам всем огромное:thanks:


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