Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не работает код.
 
 автор: WebTech   (14.09.2006 в 15:03)   письмо автору
 
 

Уважаемые профессионалы в JavaScript,
Почему этот код работает в Опере и неработает в IE и Фоксе?

<script language="JavaScript">
function recalc()
{
var tot_sum = 0;
var total_sum = document.getElementById('total_sum');
for (i=1; i<=3; i++)
  {
  prc = document.getElementById('price'+i).innerText;
  quant = document.forms['form1'].elements['quant'+i].value;
  // или так
  //quant = document.getElementById('quant'+i).value;
  tot_sum += prc * quant;
  }
total_sum.innerText = tot_sum;
}
</script>

<body>

<form name="form1">
Цена: <span id="price1">10.10</span> <input type="text" id="quant1" value="1"><br>
Цена: <span id="price2">10.10</span> <input type="text" id="quant2" value="1"><br>
Цена: <span id="price3">10.10</span> <input type="text" id="quant3" value="1"><br>
</form>

Итого: <span id="total_sum">30.3</span>0<br>
<input type="button" value="Пересчитать" onclick="recalc();">

</body>

Как сделать, чтобы работало во всех браузерах?

   
 
 автор: ExtraBrain   (14.09.2006 в 15:19)   письмо автору
 
   для: WebTech   (14.09.2006 в 15:03)
 

Попробуте заменить имя recalc() на чего нибудь другое. Например rekalk()

   
 
 автор: Padonak   (14.09.2006 в 16:19)   письмо автору
 
   для: ExtraBrain   (14.09.2006 в 15:19)
 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html> 
<head> 
<title>_|recalc|_</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<script language="JavaScript" type="text/javascript">
<!--
function reCalc(){
var tot_sum = 0; 
var total_sum = document.getElementById('total_sum'); 
for (i=1; i<=3; i++){
var prc = document.getElementById('price'+i).innerHTML; 
var quant = document.getElementById('quant'+i).value; 
tot_sum += prc*quant;

total_sum.innerHTML = tot_sum;
}
//-->
</script> 

<body> 
<div>
<form name="form1" action=""> 
Цена: <span id="price1">10.10</span> <input type="text" id="quant1" value="1" /><br /> 
Цена: <span id="price2">10.10</span> <input type="text" id="quant2" value="1" /><br /> 
Цена: <span id="price3">10.10</span> <input type="text" id="quant3" value="1" /><br /> 

<br /><br />
Итого: <span id="total_sum">30.3</span>0<br /><br />
<input type="button" value="Пересчитать" onclick="reCalc();" >
</form> 
</div>
</body>
</html>

   
 
 автор: WebTech   (14.09.2006 в 17:54)   письмо автору
 
   для: Padonak   (14.09.2006 в 16:19)
 

Уважаемый, Padonak, не могли бы вы объяснить, в чем была моя ошибка?

   
 
 автор: Padonak   (14.09.2006 в 18:18)   письмо автору
 
   для: WebTech   (14.09.2006 в 17:54)
 

ну были там ошибки такие как: не указан экшн в форме и форма просто ни в чем не содержащаяся не должна быть потому что воспринимается как ошибка. потом я заменил имя самой функции как советовали выше (на это только ИЕ реагировал) и еще там что-то поменял (иннерТекст на иннерХТМЛ) - сам сравни код там же все видно

   
 
 автор: WebTech   (14.09.2006 в 18:28)   письмо автору
 
   для: Padonak   (14.09.2006 в 18:18)
 

Я все проверил. Решающим оказалось только имя функции. Вся проблема оказалась в заглавной букве в функции. Все остальное не играло никакой рояли. С буквой - это глюк Оперы или IE?

   
 
 автор: 12345   (14.09.2006 в 20:44)   письмо автору
 
   для: WebTech   (14.09.2006 в 18:28)
 

Это глюк разработчика. Язык - регистрозависимый. :)

Что-то не увидел заглавной буквы. Дело не в ней - слово recalc, очевидно, имеется среди зарезервированных. Заменил на recalc1 - всё заработало (в IE).

   
 
 автор: Padonak   (15.09.2006 в 01:10)   письмо автору
 
   для: 12345   (14.09.2006 в 20:44)
 

WebTech надо не просто чтобы работало делать а чтобы не было ни ошибок ни предупреждений тогда можно спокойно сказать что ты правильно все написал :-)

   
 
 автор: katty   (15.09.2006 в 11:09)   письмо автору
 
   для: 12345   (14.09.2006 в 20:44)
 

recalc( )

recalc(flag)

В IE5 представлена концепция динамических свойств. С помощью метода setExpression() для всех элементов и значений таблицы стилей expression() можно устанавливать зависимости между свойствами объектов и потенциально динамическими свойствами, такими как размер окна или расположение перетаскиваемого элемента. После того, как установлены эти зависимости, метод document.recalc() заставляет обновлять зависимости в ответ на некоторое действие пользователя, например, изменение размеров окна или перемещение элемента.

Возвращаемое значение
Зависит от команды.

Параметры flag
Если false (по умолчанию), то обновление выполняется только для выражений, в которых броузер обнаружил изменения, произошедшие со времени последнего обновления. В противном случае обновляются все выражения, независимо от того, изменились они или нет.

   
 
 автор: coloboc66   (15.09.2006 в 11:20)   письмо автору
 
   для: WebTech   (14.09.2006 в 17:54)
 

Уважаемый, Padonak, не могли бы вы объяснить, в чем была моя ошибка?- хорошо сказано, черт возьми...
P.S. Никому не в обиду, если буду кем-то неправильно понят...:)

   
 
 автор: Mirage   (15.09.2006 в 11:25)   письмо автору
 
   для: coloboc66   (15.09.2006 в 11:20)
 

-))))))))))))))))))))))))))))

   
 
 автор: Padonak   (15.09.2006 в 13:04)   письмо автору
 
   для: Mirage   (15.09.2006 в 11:25)
 

я тоже улыбался :-)))))

   
 
 автор: WebTech   (16.09.2006 в 19:38)   письмо автору
 
   для: Padonak   (15.09.2006 в 13:04)
 

Спасибо, Katty! :-)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования