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

HTML+CSS+JavaScript

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

 

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

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

тема: Динамический вывод в FireFox - не могу заставить работать.
 
 автор: Взводатор   (06.09.2007 в 14:49)   письмо автору
 
 

Здравствуйте, господа!
Достаточно долго существует форма http://users.i.com.ua/~miroshko/wiresel.html для расчета сечения проводников. Проблема в том, что она не работает в FireFox. Как водится, убрал из нее все document.all, периодически пробую разные варианты, которые нахожу в Сети - и все пока безрезультатно. Может подскажете, в чем может быть дело? Интересующие меня моменты из того, что я в последнее время пробовал, выкладываю. В Опере, ИЕ, все работает.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> PowerCalc </title>

<script type="text/javascript" language="JavaScript">
//===================================================================
function Calc ()
{ // с помощью DOM
var PowerRef = document.getElementById("Power"); // получаем ссылку на элемент SPAN
var new_txt = document.createTextNode(document.getElementById("Voltage").value * document.getElementById("Current").value + " W"); // получаем выводимый текст
PowerRef.replaceChild(new_txt, PowerRef.childNodes[0]); // Меняем содержимое узла на полученный текст
};
//===================================================================
function Calc2 ()
{ // с помощью getElementById
Power2.innerText = document.getElementById("Voltage2").value * document.getElementById("Current2").value + " W"; // получаем выводимый текст
};
//===================================================================
function Calc3 ()
{ // с помощью getElementById
Power3.innerText = document.getElementById("Voltage3").value * document.getElementById("Current3").value + " W"; // получаем выводимый текст
document.getElementById("Power3").write;
};
//===================================================================
</script>

</head>

<body>

1:
<input type = "text" name = "Voltage" value = " 1" size="3" onchange="Calc ()">V * <!-- ввод напряжения -->
<input type = "text" name = "Current" value = " " size="3" onchange="Calc ()">A = <!-- ввод тока -->
<SPAN id="Power">&nbsp;</SPAN> <!-- вывод мощности -->
<br>

2:
<input type = "text" name = "Voltage2" value = " 2" size="3" onchange="Calc2 ()">V * <!-- ввод напряжения -->
<input type = "text" name = "Current2" value = " " size="3" onchange="Calc2 ()">A = <!-- ввод тока -->
<SPAN id="Power2"><SCRIPT language = JavaScript> document.write(Power2.innerText) </SCRIPT></SPAN> <!-- вывод мощности -->
<br>

3:
<input type = "text" name = "Voltage3" value = " 3" size="3" onchange="Calc3 ()">V * <!-- ввод напряжения -->
<input type = "text" name = "Current3" value = " " size="3" onchange="Calc3 ()">A = <!-- ввод тока -->
<SPAN id="Power3"></SPAN> <!-- вывод мощности -->
<br>

<br>
<input type="submit" name="Run" value="Вычислить" onkeypress="Calc()">

</body>
</html>

   
 
 автор: Madman   (06.09.2007 в 15:13)   письмо автору
 
   для: Взводатор   (06.09.2007 в 14:49)
 

innerText ФФ не понимает! Используйте innerHTML...
используйте полную форму для обращения к элементу. Те. вместо Power3.innerText пишите document.getElementById('Power3').innerHTML
И я совсем не понял назначения вот этому: document.getElementById("Power3").write;

   
 
 автор: Взводатор   (06.09.2007 в 18:21)   письмо автору
 
   для: Madman   (06.09.2007 в 15:13)
 

innerHTML, по крайней мере у меня на работе, вводит FireFox в ступор - он не может даже загрузиться. Версия самая последняя - 2.0.0.6
Madman, если Вас не затруднит, можно привести работающий фрагмент в таком виде, в каком я привел свой вариант?

"И я совсем не понял назначения вот этому: document.getElementById("Power3").write"
Печать в тег <span> непосредственно из скрипта. А как это еще можно сделать? Этот способ был найден случайно - он что, дик?

   
 
 автор: sim5   (06.09.2007 в 18:24)   письмо автору
 
   для: Взводатор   (06.09.2007 в 18:21)
 

>innerHTML, по крайней мере у меня на работе, вводит FireFox в ступор

У меня этой же версии FF - ступора от innerHTML не наблюдается.

   
 
 автор: Взводатор   (06.09.2007 в 22:02)   письмо автору
 
   для: Madman   (06.09.2007 в 15:13)
 

"И я совсем не понял назначения вот этому: document.getElementById("Power3").write;"

К полученному элементу document.getElementById("Power3") применяем метод write.


Замена innerText на innerHTML в приведенном коде вешает FF и он завершается как неотвечающая программа. Проверено на трех компьютерах. FF версии 2.0 и 2 * 2.0.0.6.

<head>
<script type="text/javascript" language="JavaScript">
//===================================================================
function Calc4 ()
{ document.getElementById("Power4").innerText = document.getElementById("Voltage4").value * document.getElementById("Current4").value + " W"; // получаем выводимый текст
};
//===================================================================
</script>
</head>

<body>

4:
<input type = "text" id = "Voltage4" value = " 4" size="3" onchange="Calc4 ()">V * <!-- ввод напряжения -->
<input type = "text" id = "Current4" value = " " size="3" onchange="Calc4 ()">A = <!-- ввод тока -->

<SPAN id="Power4">
<SCRIPT language = JavaScript>
document.write(document.getElementById("Power4").innerText) <!-- вывод мощности -->
</SCRIPT>
</SPAN>
<br>

<br>
<input type="submit" name="Run" value="Вычислить" onkeypress="Calc4 ()">
</body>

   
 
 автор: sim5   (07.09.2007 в 00:03)   письмо автору
 
   для: Взводатор   (06.09.2007 в 22:02)
 


<script type="text/javascript" language="JavaScript">
function Calc4 () { 
document.getElementById("Power4").innerHTML = document.getElementById("Voltage4").value * document.getElementById("Current4").value + " W"; 
}
</script>

<input type = "text" id = "Voltage4" value = "4" size="3" onchange="Calc4 ()">V *
<input type = "text" id = "Current4" value = "" size="3" onchange="Calc4 ()">A =
<SPAN id="Power4"></SPAN>
<br>
<br>
<input type="submit" name="Run" value="Вычислить" onkeypress="Calc4 ()">


Проверено на FF 2.0.0.6 - все работает, что у вас там виснет. И что вы такое дремучее в SPAN вставляете, к чему это?

   
 
 автор: Взводатор   (07.09.2007 в 00:20)   письмо автору
 
   для: sim5   (07.09.2007 в 00:03)
 

Большое спасибо!

Да, вот в этой дремучести и было дело! А подсмотрел я это года четыре назад на каком-то сайте, вот и делал все по образу и подобию. ИЕ, видимо, просто игнорировал эту ошибку.

Как я понимаю, происходило элементарное зацикливание - скрипт в <span>-е обращался к самому же <span>-у. Вот только почему у Вас не зацикливалось? :)

   
 
 автор: sim5   (07.09.2007 в 00:32)   письмо автору
 
   для: Взводатор   (07.09.2007 в 00:20)
 

Я просто сразу выбросил это из SPAN - это, ну короче у меня слов нет, как это назвать, потому и нечему было зацикливаться :) Я говорил вам об innerHTML в FF.

   
 
 автор: sim5   (06.09.2007 в 15:22)   письмо автору
 
   для: Взводатор   (06.09.2007 в 14:49)
 

Вопрос по электротехнике V*I=P, а причем тут сечение проводников, или это только часть? И зачем три одинаковых функции?

   
 
 автор: Взводатор   (06.09.2007 в 18:29)   письмо автору
 
   для: sim5   (06.09.2007 в 15:22)
 

Я привел три варианта решения стоящей передо мной задачи - добиться вывода в html форму сформированного значения и чтобы это было понятно FireFox-у. Вычисление мощности было взято как простейший и понятнейший пример.

А так сечение проводника зависит от тока, кторый нужно через него передать, а мощность связана с током в простейшем случае вышеприведенной формулой. При этом нужно учитывать три составляющие - тепловая нагрузка на изоляцию, потери в линии и экономическую плотность тока. Последний расчет для конечных потребителей не производится.

   
 
 автор: sim5   (06.09.2007 в 18:37)   письмо автору
 
   для: Взводатор   (06.09.2007 в 18:29)
 

Я хорошо знаю как расчитывается сечение провода, потому меня и удивили эти примеры. :)

Свойство innerHTML было определено для браузера IE4. Не смотря на то, что это свойство не включено в W3C DOM, его практически поддерживают все браузеры, включая Moz1и Safari. Почему у вас с этим проблемы в FF не понятно. Что у вас выдает FF в консоле ошибок? А вот такое:

document.getElementById("Power3").write;

это просто из рук вон!

   
Rambler's Top100
вверх

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