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

HTML+CSS+JavaScript

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

 

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

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

тема: Работает вопреки всем правилам!
 
 автор: Владимир55   (08.11.2005 в 14:33)   письмо автору
 
 

Хочу на своем сайте поставить программу-тест. Шаблон такой программы существует и он нормально работает. Меня все устраивает, за исключением одного: результат выводится в окошечке, а мне надо, что бы открывалось соответствующее внешнее окно с набранным мною текстом, но вот такой пустяк я никак не могу исправить!

Дело в том, что я вообще не пойму, как работает этот тест! Он очень короткий и сделан очень профессионально, но непонятно!

Вот в этой форме осуществляется вывод результа:

<form charset="windows-1251" name=D action="" method=post>
<input type=hidden name=tDtxt1 value="Это диагностика 1">
<input type=hidden name=tDtxt2 value="Это диагностика 2">
<input type=hidden name=tDtxt3 value="Это диагностика 3">
</form>

Ну как она работает?

В итоге в зависимости от результата тестирования на экране выводится "Это диагностика 1" или "Это диагностика 2" или "Это диагностика 3"

Имена tDtxt1 больше нигде в программе не используются!

Как мне сделать так, что бы вместо того, что бы на экран выводилось сообщение "Это диагностика 1" открывался некий файл diag-1.htm, вместо "Это диагностика 2" открывался некий файл diag-2.htm, в вместо "Это диагностика 3" открывался некий файл diag-3.htm?

И можно ли это ввобще осуществить?

Полностью программа приведена в Приложении - на всякий случай!

Пожалуйста, помогите! Все праздники просидет без толка!!!

   
 
 автор: coloboc66   (08.11.2005 в 15:10)   письмо автору
 
   для: Владимир55   (08.11.2005 в 14:33)
 

Например, так:

<input type=hidden name=tDtxt1 value="Щелкните здесь для открытия соответствующего файла" onclick="window.open('diag-1.htm')">
<input type=hidden name=tDtxt2 value="Щелкните здесь для открытия соответствующего файла"onclick="window.open('diag-2.htm')">
<input type=hidden name=tDtxt3 value="Щелкните здесь для открытия соответствующего файла"onclick="window.open('diag-3.htm')">

Да кучу способов можно придумать!

   
 
 автор: coloboc66   (08.11.2005 в 15:15)   письмо автору
 
   для: coloboc66   (08.11.2005 в 15:10)
 

Извиняюсь- не заметил, что поля скрытые, но все равно- смысл такой-же.

   
 
 автор: Владимир55   (08.11.2005 в 15:40)   письмо автору
 
   для: coloboc66   (08.11.2005 в 15:15)
 

Спасибо!

А можно ли сделать так, что бы без щелчка соответствующий файл открывался сам?

   
 
 автор: coloboc66   (08.11.2005 в 15:52)   письмо автору
 
   для: Владимир55   (08.11.2005 в 15:40)
 

Вместо щелчка можно установить любое другое событие, но событие должно быть, иначе броузер не будет знать, когда открывать файл.

   
 
 автор: Владимир55   (08.11.2005 в 16:13)   письмо автору
 
   для: coloboc66   (08.11.2005 в 15:52)
 

В этой прграмме событие у же есть и оно стоит ранее - нажание кнопки "Готово". А теперь я бы очень хотел вместо надписи открыть новвый файл!

Ну неужели это невозможно?

   
 
 автор: coloboc66   (09.11.2005 в 09:59)   письмо автору
 
   для: Владимир55   (08.11.2005 в 16:13)
 

Перед закрывающей скобкой функции makeDiagnosis() поставь две строки:

if(document.C.tDiagnosis.value =='Это диагностика 1')window.open('diag1.htm');
else if(document.C.tDiagnosis.value =='Это диагностика 2')window.open('diag2.htm');

А document.C.tDiagnosis.value засунь не в textarea, а в hidden:
<input type="hidden" name="tDiagnosis">

И будет щастье...

   
 
 автор: Владимир55   (09.11.2005 в 11:12)   письмо автору
 
   для: coloboc66   (09.11.2005 в 09:59)
 

Попробовал.

Форма стала иметь вот такой вид:

<form charset="windows-1251" name=D action="" method=post>
<input type=hidden name=tDtxt1 value="Щелкните здесь для открытия соответствующего файла" onclick="window.open('diag-1.htm')">
<input type=hidden name=tDtxt2 value="Щелкните здесь для открытия соответствующего файла"onclick="window.open('diag-2.htm')">
<input type=hidden name=tDtxt3 value="Щелкните здесь для открытия соответствующего файла"onclick="window.open('diag-3.htm')">

</form>

Правильно я сделал? вы такую корректировку имели в виду?

С крипт расчета результатов теперь стал таким:

<!-- скрипт расчета результатов тестирования -->
<script>
<!--

function makeDiagnosis(

if(document.C.tDiagnosis.value =='Это диагностика 1')window.open('diag1.htm');
else if(document.C.tDiagnosis.value =='Это диагностика 2')window.open('diag2.htm');
) {

tQcnt = 2;
tDcnt = 3;

summa = 0;
for( j=0; j<document.Q.rb1.length; j++ ) { if( document.Q.rb1[j].checked ) { summa += eval(document.Q.rb1[j].value); } }
for( j=0; j<document.Q.rb2.length; j++ ) { if( document.Q.rb2[j].checked ) { summa += eval(document.Q.rb2[j].value); } }

dx = -1;
for( i=0; i<tDcnt; i++ ) {
if( summa >= eval(document.L.elements[i].value) && summa <= eval(document.H.elements[i].value) ) { dx = i; break; }
}

document.C.tDiagnosis.value = document.D.elements[dx].value;

}

// -->
</script>
<!-- /скрипт расчета результатов тестирования -->

Правильно я сделал? Вы это имели в виду?


А вот это Ваше указание

А document.C.tDiagnosis.value засунь не в textarea, а в hidden:
<input type="hidden" name="tDiagnosis">

я не сумел исполнить - не понял, куда конкретно засовывать.

Но в итоге всего тест перестал открываться вообще. На служебной строке слева внизу пишет: "Ошибка на странице".

Что я сделал не так?

   
 
 автор: coloboc66   (09.11.2005 в 11:36)   письмо автору
 
   для: Владимир55   (09.11.2005 в 11:12)
 

В том заархивированном файле, который ты выложил в своем первом сообщении, ничего не меняй, просто добавь в конец функции makeDiagnosis() (в конец, а не в начало, как сделал ты) следующие строки, их количество равно количеству скрытых полей в форме с именем D:

 if(document.C.tDiagnosis.value =='Это диагностика 1')window.open('diag1.htm');
else if(document.C.tDiagnosis.value =='Это диагностика 2')window.open('diag2.htm');
else if(document.C.tDiagnosis.value =='Это диагностика 3')window.open('diag3.htm');

Далее, в форме с именем С убери строку

<textarea name=tDiagnosis rows=6 cols=80 wrap></textarea>

и вместо нее вставь строку

<input type="hidden" name="tDiagnosis">

И будет щастье...

   
 
 автор: Владимир55   (09.11.2005 в 12:30)   письмо автору
 
   для: coloboc66   (09.11.2005 в 11:36)
 

Спасибо, coloboc66 !

Все так и вышло, как Вы предрекали - комнату огласил вопль восторга!

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

Очевидно, что Вы - ВЕЛИКОЛЕПНЫЙ программист, способный создавать сложнейшие программы!

Я очень рад достигнутому с Вашй помошью результату и очень Вам за помощь благодарен!

Благодарен за помощь и за терпение!

Спасибо Вам большое!

С уважением, Владимир.

   
 
 автор: coloboc66   (09.11.2005 в 23:41)   письмо автору
 
   для: Владимир55   (09.11.2005 в 12:30)
 

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

   
Rambler's Top100
вверх

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