Подскажите новачку: Не работает в IE, Chrome и Safari
Народ плиз подскажите, я только сегодня сел за джава скрипт все вроде радотает, но в IE, Chrome и Safari нехочет. У когото есть идеи?
<script language="JavaScript"> function countit(form) { var TicketCount = form.TicketCount.value; var TicketVipCount = form.TicketVipCount.value; var TableCount = form.TableCount.value; var TicketPrice = 40; var TicketVipPrice = 100; var TablePrice = 50; var MyCount = 278; if (TicketPrice != '0') { var TicketExit = parseFloat(TicketPrice) * TicketCount; } else { var TicketExit = 0; } if (TicketVipPrice != '0') { var TicketVipExit = parseFloat(TicketVipPrice) * TicketVipCount; } else { var TicketVipExit = 0; } if (TablePrice != '0') { var TableExit = parseFloat(TablePrice) * TableCount; } else { var TableExit = 0; } var SumPrice = TicketExit + TicketVipExit + TableExit; if (SumPrice >= MyCount) { document.getElementById('but').disabled = true; var NeedToPay = SumPrice - MyCount; document.getElementById('debug').innerHTML = 'ERROR :) '+ NeedToPay +' '; } else { document.getElementById('but').disabled = false; document.getElementById('debug').innerHTML = SumPrice.toFixed(2); } } </script> <form method="POST" onChange="countit(this)"> <table border="0" cellspacing="4" cellpadding="3"> <tr><td style="color: #3A7611; vertical-align: middle">Кількість квитків:</td><td><select name="TicketCount" size="1"><option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option><option>18</option><option>19</option><option>20</option></select></td></tr> <tr><td style="color: #3A7611; vertical-align: middle">Кількість VIP квитків:</td><td><select name="TicketVipCount" size="1"><option>0</option><option>1</option><option>2</option></select></td></tr> <tr><td style="color: #3A7611; vertical-align: middle">Кількість столиків:</td><td><select name="TableCount" size="1"><option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option></select></td></tr> </table> <input type="submit" id="but"> </form> <div id="debug"></div> |
откуда у формы onchange? у select, например, есть
к элементам лучше обращаться form.elements['name'].value var TicketExit = TicketPrice ? parseFloat(TicketPrice) * TicketCount : 0; |
Цитата:
Очень било б класно если б кто написал решение с коментариями |
var TicketExit = TicketPrice ? parseFloat(TicketPrice) * TicketCount : 0; это упрощенная запись: if (TicketPrice != '0') { var TicketExit = parseFloat(TicketPrice) * TicketCount; } else { var TicketExit = 0; } С использованием тернарного оператора ? : И у формы нет метода onchange он есть у элемента select, т.е. Вам нужно вешать обработчик на каждый select, примерно так: <select name="TicketCount" size="1" onChange="countit(this)"> только в таком случае, для Вашей функции придется передавать не this, а саму форму в которой находится select, либо получать форму из самой функции. |
все вроде понял, только кроме етого:
Цитата:
если ктото может навести хоть какой пример. |
Задаете id своей форме например id="form" и дальше получаете при помощи document.getElementById("form");
|
Смотрите зделал так:
<script language="JavaScript"> function Count(form) { var TicketCount = document.getElementById('TicketCount'); var TicketVipCount = document.getElementById('TicketVipCount'); var TableCount = document.getElementById('TableCount'); var TicketPrice = 40; var TicketVipPrice = 100; var TablePrice = 50; var MyCount = 278; if (TicketPrice != '0') { var TicketExit = parseFloat(TicketPrice) * TicketCount.value; } else { var TicketExit = 0; } if (TicketVipPrice != '0') { var TicketVipExit = parseFloat(TicketVipPrice) * TicketVipCount.value; } else { var TicketVipExit = 0; } if (TablePrice != '0') { var TableExit = parseFloat(TablePrice) * TableCount.value; } else { var TableExit = 0; } var SumPrice = TicketExit + TicketVipExit + TableExit; if (SumPrice >= MyCount) { document.getElementById('but').disabled = true; var NeedToPay = SumPrice - MyCount; document.getElementById('debug').innerHTML = 'ERROR :) '+ NeedToPay +' '; document.getElementById('sum').innerHTML = ''; } else { document.getElementById('but').disabled = false; document.getElementById('debug').innerHTML = ''; document.getElementById('sum').innerHTML = SumPrice.toFixed(2); } } </script> <form method="POST"> <table border="0" cellspacing="4" cellpadding="3"> <tr><td style="color: #3A7611; vertical-align: middle; width: 300px">Кількість квитків:</td><td><select id="TicketCount" onChange="Count(this)" name="TicketCount" size="1" style="width: 50px"><option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option><option>18</option><option>19</option><option>20</option></select></td></tr> <tr><td style="color: #3A7611; vertical-align: middle">Кількість VIP квитків:</td><td><select id="TicketVipCount" onChange="Count(this)" name="TicketVipCount" size="1" style="width: 50px"><option>0</option><option>1</option><option>2</option></select></td></tr> <tr><td style="color: #3A7611; vertical-align: middle">Кількість столиків:</td><td><select id="TableCount" onChange="Count(this)" name="TableCount" size="1" style="width: 50px"><option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option></select></td></tr> </table> <input type="submit" id="but" value="увійти" class="buttom_small"> </form> все вроде нормально, пашет всюда кроме IE. исправте пожалуйста!!! |
включи отладку в ie (Tools/Internet Options/Advanced/Disable Script Debugging) и посмотри, что ему не нравится
в HTML 4.01 атрибут name тэга form считается deprecated, но по идее можно обращаться к форме по id document.forms[<formId>].elements[<elementName>] где <elementName> - значение атрибута name элемента формы не имеет смысла передавать в функцию this и принимать в ней не используемый параметр form, там более что теперь он указывает на элемент формы |
хотя можно этот this использовать: переименовать form -> el и писать el.form.elements[<elementName>], чтобы получить доступ к другим элементам формы
|
тоесть моя ошибка только в том, что я неверно передаю з поля дание? а все прочиие верно?
|
Часовой пояс GMT +3, время: 10:32. |