Подскажите новачку: Не работает в 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, время: 01:13. |