Здравствуйте, написал скрипт для расчёта: все просто в зависимости от выбраных радио кнопок и чек боксов производится расчёт. Вот код HTML: <form name="designForm"> <div padding: 1em;"> <dl class="tabsheets"> <dt style="cursor: pointer"></dt> <dd> <div class="reducer"> <p> <t class="title"></t> <br><input type = "radio" onClick="count4Site()" name = "sizeRadio" value = "less10"> <br><input type = "radio" onClick="count4Site()" name = "sizeRadio" value = "less50"> </p> <p> <t class="title"></t> <br><input type = "radio" CHECKED onClick="count4Site()" name = "designRadio" value = "allSame"> <br><input type = "radio" onClick="count4Site()" name = "designRadio" value = "firstOriginal"> </p> <p> <t class="title"></t> <br><input type = "checkbox" onClick="count4Site()" name = "news"> <br><input type = "checkbox" onClick="count4Site()" name = "vacancies"> <br><br><t class="title"> <strong> //В эту область производится вывод числа <pt id="outputText"></pt> </t> </p> код рабочих функций: [js] function count4Site() { for (var i in document.designForm.sizeRadio) { if (document.designForm.sizeRadio.checked=="1") { checkedButton4sizeRadio = document.designForm.sizeRadio.value; } } for (var i in document.designForm.designRadio) { if (document.designForm.designRadio.checked=="1") { checkedButton4designRadio = document.designForm.designRadio.value; } } if(checkedButton4sizeRadio == "less10") { if(checkedButton4designRadio == "allSame") { price = 15000; } if(checkedButton4designRadio == "firstOriginal") { price = 17000; } } if(checkedButton4sizeRadio == "less50") { if(checkedButton4designRadio == "allSame") { price = 20000; } if(checkedButton4designRadio == "firstOriginal") { price = 25000; } } if(document.designForm.news.checked) { price = price + 5000; } if(document.designForm.vacancies.checked) { price = price + 5000; } price = number_format(price,0,',',' '); document.getElementById("outputText").innerHTML = price } [/js] в мозиле все летает а вот в Explore пишет ошибку: checkedButton4sizeRadio - определение отсутствует В чем проблема и как ее рашить?
Проблема в видимости переменных. checkedButton4sizeRadio определяется внутри блока if (и внутри блока for впридачу), а потом ты ее пытаешься использовать вне этого блока. То же самое касается и всех остальных переменных. Странно что в Мозилле работает
karakh 1. блоки if и for не определяют новую область видимости 2. переменные объявленные не явным образом (без var) попадают в глобальную область видимости (window) говорит о том что первые два цикла провалились [js] function count4Site() { function getVal(name) { var a = document.getElementsByName(name) for (var i = 0; i < a.length; i++) if (a.checked) return a.value } var priceTable = { less10: { allSame: 15000, firstOriginal: 17000 }, less50: { allSame: 20000, firstOriginal: 25000 } } var price = priceTable[getVal('sizeRadio')][getVal('designRadio')] if (document.designForm.news.checked) price += 5000 if (document.designForm.vacancies.checked) price += 5000 ...[/js]
спасибо! еще вопрос по коду. я делал тупо перебором всех возможных вариантов, в приведённом выше примере более обобщённо код построен... а как лучше (по скорости) реализовывать код?
В данном случае скорость - не показатель. Подумай сам, зачем оптимизировать на скорость код, выполняющийся один раз, за время, незаметное глазу?
дело в том что у меня это функция вызывается по событию оnClick на элементе checkbox и кнопках radiobox и почему-то в explore он выдает ошибку... http://www.point-it.ru/design.html в чем причина и где искать ее решение?
дело ещё походу не только в коде. Убрал все оставил только [js]document.getElementById("outputText").innerHTML = "1234"[/js] в checkbox по событию onClick вызываю функцию он не работает пишет ошибку: Неизвестная причина. хотя код вроде DOM