1

Тема: JavaScript: не работает onclick="CalcResult()" в Opera старше 10.63

Здраствуйте. У меня на сайте ПП "Галмікроклімат" Вентиляція Опалення Кондиціонування есть вот такой расчет. Он работает в IE, FF и Opera версий до 10.63. После версии 10.63 он не работает. Вот часть кода

 <form action="" name="calcw" method="post"> 
<table align="left" width="100%"> 
<tbody> 
<tr> 
<td align="left" width="70%"> 
<strong>Параметри для розрахунку</strong><br> 
<input name="lf" size="4" maxlength="5"> Довжина дзеркала води, м<br> 
<input name="bf" size="4" maxlength="5"> Ширина дзеркала води, м<br> 
<input name="twf" size="4" maxlength="3"> Температура води, град Цельсія (0..100)<br> 
<input name="taf" size="4" maxlength="3"> Температура повітря, град Цельсія (0..100)<br> 
<input name="fif" size="4" maxlength="3"> Значення відносної вологості повітря в приміщенні басейну,% (0..100)<br> 

<br> 
<strong>Тип басейну</strong><br> 
<input name="rl" value="0.5" type="radio"> - великі громадські басейни <br> 
<input name="rl" value="0.4" type="radio"> - басейн готелю <br> 
<input name="rl" value="0.3" checked="checked" type="radio"> - невеликий приватний басейн <br> 

<br> 
<strong>Характеристики вентиляції</strong><br> 
<input name="x" value="1" type="radio"> - вентиляція відсутня <br> 
<input name="x" value="2" type="radio"> - вентиляція згідно VDI 2086 (10 м3/год на 1 м2 водяної поверхні) <br> 
<input name="x" value="3" checked="checked" type="radio"> - вказати вручну кількість свіжого повітря <input name="ventr" size="4" maxlength="5"> м3/год <br> 


</font> 
</td> 

<td rowspan="2" align="left"> 
<span id="cmsResult"></span> 
</td> 
</tr> 
<tr> 
<td align="left" valign="top"> 
<br> 
<input name="cmdOK" value="&nbsp;Розрахунок&nbsp;" onclick="CalcResult()" type="button"> 

</td> 
</tr> 
</tbody> 
</table> 
</form>

Возможно ли как-то исправить код, чтоб расчет осуществлялся и в новых версиях оперы, или может есть функция, аналогична к onclick="CalcResult()". Буду очень благодарен за помощь.

2

Re: JavaScript: не работает onclick="CalcResult()" в Opera старше 10.63

Орест, нет такого префикса как «Важно:», укажите правильный префикс. Ссылки оформляем тэгом «url», код — тэгом «code» (смотреть там же). Лепить в код нумерацию строк не следует. Я поправил Ваш пост.

И где сама функция «CalcResult()»?

3

Re: JavaScript: не работает onclick="CalcResult()" в Opera старше 10.63

alexii пишет:

Орест, нет такого префикса как «Важно:», укажите правильный префикс. Ссылки оформляем тэгом «url», код — тэгом «code» (смотреть там же). Лепить в код нумерацию строк не следует. Я поправил Ваш пост.

И где сама функция «CalcResult()»?

Спасибо. То есть где функция, она же в коде.

4

Re: JavaScript: не работает onclick="CalcResult()" в Opera старше 10.63

Орест, я не нашёл, ткните меня носом.

5

Re: JavaScript: не работает onclick="CalcResult()" в Opera старше 10.63

alexii пишет:

Орест, я не нашёл, ткните меня носом.

<td align="left" valign="top"> 
<br> 
<input name="cmdOK" value="&nbsp;Розрахунок&nbsp;" onclick="CalcResult()" type="button"> 

</td>

6

Re: JavaScript: не работает onclick="CalcResult()" в Opera старше 10.63

Орест, вижу вызов функции «CalcResult()», саму функцию не вижу.

Или Вы хотели сказать, что не работает сам вызов?

7

Re: JavaScript: не работает onclick="CalcResult()" в Opera старше 10.63

alexii пишет:

Орест, вижу вызов функции «CalcResult()», саму функцию не вижу.

Или Вы хотели сказать, что не работает сам вызов?

Да, именно вызов. Он успешно работал в Опере до версии 10.63. Потом обновил версию и он перестал работать. Может можно как-то исправить код или заменить функцию «CalcResult()»

8

Re: JavaScript: не работает onclick="CalcResult()" в Opera старше 10.63

Перенес тему в раздел JavaScript (браузерный).

Орест, покажите сам код функции CalcResult. В ней и кроется ошибка. Если не верите, попробуйте заменить ее код на

function CalcResult() {alert()}

9

Re: JavaScript: не работает onclick="CalcResult()" в Opera старше 10.63

function CalcResult(){var calcw=document.calcw;var length=calcw.lf.value;var width=calcw.bf.value;var watertemperature=calcw.twf.value;var temperature=calcw.taf.value;var vlag=calcw.fif.value;var venttr=calcw.ventr.value;for(counter=0;counter<calcw.rl.length;counter++)
{if(calcw.rl[counter].checked)
var type=calcw.rl[counter].value;}
for(counter=0;counter<calcw.x.length;counter++)
{if(calcw.x[counter].checked)
var xx=calcw.x[counter].value;}
var vPnas=parseFloat(Pnas(watertemperature));var vPparc=parseFloat(Pnas(temperature))*parseFloat(vlag)/parseFloat(100);vs=parseFloat(length)*parseFloat(width);if(xx==1)
{var obem=parseFloat(0);}
if(xx==2)
{var obem=parseFloat(vs*parseFloat(10));}
if(xx==3)
{var obem=parseFloat(vs*parseFloat(0)+parseFloat(venttr));}

10

Re: JavaScript: не работает onclick="CalcResult()" в Opera старше 10.63

Непонятно, что делает Ваша функция, но она скопирована не полностью. Пройдите по этой ссылке http://www.jsbeautifier.org/ вставьте свой текст и посмотрите, что получится.

( 2 * b ) || ! ( 2 * b )

11 (изменено: Орест, 2011-05-18 14:08:06)

Re: JavaScript: не работает onclick="CalcResult()" в Opera старше 10.63

function Pnas(temperature){var pnas=new 

Array();pnas["1"]='6.56';pnas["2"]='7.05';pnas["3"]='7.57';pnas["4"]='8.13';pnas["5"]='8.72';pnas["6"]='9.35';pnas["

7"]='10.01';pnas["8"]='10.72';pnas["9"]='11.47';pnas["10"]='12.27';pnas["11"]='13.12';pnas["12"]='14.01';pnas["13"]=

'15.00';pnas["14"]='15.97';pnas["15"]='17.04';pnas["16"]='18.17';pnas["17"]='19.36';pnas["18"]='20.62';pnas["19"]='2

1.90';pnas["20"]='23.37';pnas["21"]='24.05';pnas["22"]='26.42';pnas["23"]='28.08';pnas["24"]='29.82';pnas["25"]='31.

67';pnas["26"]='33.60';pnas["27"]='35.64';pnas["28"]='37.78';pnas["29"]='40.04';pnas["30"]='42.41';pnas["31"]='44.91

';pnas["32"]='47.53';pnas["33"]='50.29';pnas["34"]='53.18';pnas["35"]='56.22';pnas["36"]='59.40';pnas["37"]='62.74';

pnas["38"]='66.24';pnas["39"]='69.91';pnas["40"]='73.75';pnas["41"]='77.77';pnas["42"]='81.96';pnas["43"]='86.39';pn

as["44"]='91.00';pnas["45"]='95.82';pnas["46"]='100.85';pnas["47"]='106.12';pnas["48"]='111.62';pnas["49"]='117.36';

pnas["50"]='123.35';pnas["51"]='133.35';pnas["52"]='143.35';pnas["53"]='149.26';pnas["54"]='152.35';pnas["55"]='157.

41';pnas["56"]='167.41';pnas["57"]='177.41';pnas["58"]='187.41';pnas["59"]='197.41';pnas["60"]='199.17';pnas["61"]='

210.17';pnas["62"]='220.17';pnas["63"]='230.17';pnas["64"]='240.17';pnas["65"]='250.10';pnas["66"]='260.10';pnas["67

"]='270.10';pnas["68"]='280.10';pnas["69"]='290.10';pnas["70"]='311.6';pnas["71"]='321.6';pnas["72"]='331.6';pnas["7

3"]='341.6';pnas["74"]='351.6';pnas["75"]='385.5';pnas["76"]='395.5';pnas["77"]='425.5';pnas["78"]='435.5';pnas["79"

]='445.5';pnas["80"]='473.6';pnas["81"]='483.6';pnas["82"]='493.6';pnas["83"]='523.6';pnas["84"]='543.6';pnas["85"]=

'578.0';pnas["86"]='610.0';pnas["87"]='620.0';pnas["88"]='640.0';pnas["89"]='660.0';pnas["90"]='701.1';pnas["91"]='7

21.1';pnas["92"]='741.1';pnas["93"]='761.1';pnas["94"]='781.1';pnas["95"]='815.2';pnas["96"]='825.2';pnas["97"]='845

.2';pnas["98"]='865.2';pnas["99"]='885.2';if(temperature){return(pnas[temperature]);}}
function CalcResult(){var calcw=document.calcw;var length=calcw.lf.value;var width=calcw.bf.value;var 

watertemperature=calcw.twf.value;var temperature=calcw.taf.value;var vlag=calcw.fif.value;var 

venttr=calcw.ventr.value;for(counter=0;counter<calcw.rl.length;counter++)
{if(calcw.rl[counter].checked)
var type=calcw.rl[counter].value;}
for(counter=0;counter<calcw.x.length;counter++)
{if(calcw.x[counter].checked)
var xx=calcw.x[counter].value;}
var vPnas=parseFloat(Pnas(watertemperature));var 

vPparc=parseFloat(Pnas(temperature))*parseFloat(vlag)/parseFloat(100);vs=parseFloat(length)*parseFloat(width);if(xx=

=1)
{var obem=parseFloat(0);}
if(xx==2)
{var obem=parseFloat(vs*parseFloat(10));}
if(xx==3)
{var obem=parseFloat(vs*parseFloat(0)+parseFloat(venttr));}
var 

Intensive=parseFloat(Math.round(vs*parseFloat(parseFloat(0.118)+(parseFloat(0.01995)*parseFloat(type)*(vPnas-vPparc)

/1.333))*parseFloat(100))/parseFloat(100));var 

Intensivenight=parseFloat(Math.round(vs*parseFloat(parseFloat(-0.059)+(parseFloat(0.0105)*(vPnas-vPparc)/1.333))*par

seFloat(100))/parseFloat(100));var 

Intensiveall=parseFloat(Math.round((Intensive+Intensivenight)*parseFloat(12)*parseFloat(100))/parseFloat(100));var 

Intensiveventlit=parseFloat(Math.round(obem*parseFloat(1.2)*(parseFloat(14.3)-parseFloat(11.6))*parseFloat(100))/par

seFloat(100))/parseFloat(1000);var 

Intensiveventzym=parseFloat(Math.round(obem*parseFloat(1.2)*(parseFloat(14.3)-parseFloat(2.5))*parseFloat(100))/pars

eFloat(100))/parseFloat(1000);var 

obemzagallito=parseFloat(Math.round(Intensive*parseFloat(1000)/(parseFloat(1.2)*(parseFloat(14.3)-parseFloat(11.6)))

*parseFloat(100)))/parseFloat(100);var 

obemzagalzym=parseFloat(Math.round(Intensive*parseFloat(1000)/(parseFloat(1.2)*(parseFloat(14.3)-parseFloat(2.5)))*p

arseFloat(100)))/parseFloat(100);var 

Intensiveprodlit=parseFloat(Math.round((Intensive-Intensiveventlit)*parseFloat(100))/parseFloat(100));var 

Intensiveprodzym=parseFloat(Math.round((Intensive-Intensiveventzym)*parseFloat(100))/parseFloat(100));var 

res=Intensive.toString();var resnight=Intensivenight.toString();var resall=Intensiveall.toString();var 

resventlit=Intensiveventlit.toString();var resventzym=Intensiveventzym.toString();var 

resprodlit=Intensiveprodlit.toString();var resprodzym=Intensiveprodzym.toString();var 

resobemventlito=obemzagallito.toString();var resobemventzym=obemzagalzym.toString();var 

cmsResult=document.getElementsByName("cmsResult");if(!isNaN(Intensive)){if(cmsResult[0]){cmsResult[0].innerHTML="<di

v class=result><i><u><h7>Інтенсивність випаровування</h7></u></i></div> <br><div class=result><h7> Вдень "+res+" 

л/год </h7></div><div class=result><h7> Вночі "+resnight+" л/год </h7> </div><div class=result> <h7>За добу 

"+resall+" л/добу </h7></div><br><div class=result><i><u><h7>Кількість вологи, що видалилася за допомогою 

вентиляції</h7></u></i></div> <br><div class=result><h7> "+resventlit+" л/год літом</h7></div><div class=result><h7> 

"+resventzym+" л/год зимою</h7></div><br><div class=result><i><u><h7>Кількість повітря, що необхідна для асиміляції 

вологи</h7></u></i></div><br><div class=result><h7> "+resobemventlito+" м3/год літом</h7></div><div 

class=result><h7> "+resobemventzym+" м3/год зимою</h7></div> <br><div class=result><i><u><h7>Продуктивність осушувча 

становить</h7></u></i></div> <br><div class=result> <h7>"+resprodlit+" л/год літом</h7></div><div class=result> 

<h7>"+resprodzym+" л/год зимою</h7></div>";}}else if(cmsResult[0]){cmsResult[0].innerHTML="<div 

class=result><h7>Неправильно введені параметри</h7></div>";}}
function clearResult(){var 

cmsResult=document.getElementsByName("cmsResult");if(cmsResult[0]){cmsResult[0].innerHTML=" ";}}
jsLoaded=true;