СообЧа > База Знаний > Интернет > Веб-строительство > Java-script

Вопрос

Мне нужен скрипт, который проверяет количество кликов по ссылке, но не php и perl, а обычный на Ява. Без примудростей, который считает сколько по линку кликнули, и рядом показывает число.

Ответ


<html>
<body>
<a href="http://www.microsoft.com/" target="_blank" onclick="ahc.innerText=parseInt(ahc.innerText)+1;">
Microsoft site</a>
<span>Link count:</span>
<span id="ahc">0</span>
</body>
</html>

Из конференции Expert_FAQ

Вопрос

<SELECT NAME="show">
<OPTION value="0" <?if ($show=="0")
{echo 'SELECTED';}?>>никуда не помещать</OPTION>
<OPTION value="1" <?if ($show=="1")
{echo 'SELECTED';}?>>поместить на сайт</OPTION>
<OPTION value="2" <?if ($show=="2")
{echo 'SELECTED';}?>>поместить в архив</OPTION>
<OPTION value="3" <?if ($show=="3")
{echo 'SELECTED';}?>>удалить</OPTION>
</SELECT>
<? echo 'show=',$show;?>


Помогите на JavaScript сделать так, чтобы после смены SELECTED $show сразу бы тоже сменялась и отображалась.

Ответ

Убираешь свое echo и ставишь вместо него input_text. на изменение селекта меняешь текст в инпуте. Должно получиться примерно следуещее:

<SELECT NAME="show"
onchange="show2.value='MyText'"
<OPTION value="0" <?if ($show=="0")
{echo 'SELECTED';}?>>никуда не помещать</OPTION>
<OPTION value="1" <?if ($show=="1")
{echo 'SELECTED';}?>>поместить на сайт</OPTION>
<OPTION value="2" <?if ($show=="2")
{echo 'SELECTED';}?>>поместить в архив</OPTION>
<OPTION value="3" <?if ($show=="3")
{echo 'SELECTED';}?>>удалить</OPTION> </SELECT>
<input type=text name="show2" value="<?=show;?>


Из конференции Inet_prog

Вопрос

1.Возможно ли подключить файл с помощью JS кроме как файл *.js.

2.Задано большое количество фамилий и имен как не разрывая между ними связи отсортировать либо по имени либо по фамилии.

Ответ

1) Конечно можно, например *.jpg и т.д. (вопрос в том, что значит подключить, например можно сделать так, чтобы картинка загружалась до загрузки страницы, то есть вашу картинку обязательно увидят))) (если нужен этот скрипт — пишите, мыло в конце ответа.)

2) Можно. Для этого нужно воспользоваться двухмерными массивами:

<script language="JavaScript" type="text/javascript">
var name_family=new Array(Количество человек, у кого есть и имя и фамилия)
function Full(name, family)
{
this.name=name
this.family=family
}
function full_name_family()
{
name_family[0]=new Full("Имя", "Фамилия")
name_family[1]=new Full("Имя", "Фамилия")
// И так далее.
}
full_name_family()
// Теперь можно спросить юзера, типа показать только фамилия или имена, или все вместе?
var vopros=confirm("Показывать только фамилии?")
if (vopros==true)
{
alert(name_family[0].family + ", " + name_family[1].family)
// И т.д.
}
else
{
alert(name_family[0].family + " " + name_family[0].name + ", " + name_family[1].family + " " + name_family[1].name)
// И т.д.
}


Из конференции Expert_FAQ

Вопрос

Возможно ли с помощью javaScript вносить инфориацию в реестр?

Ответ

Непосредственно в JavaScript методов для работы с реестром нет. Но можно использовать ActiveX объект WScript.Shell. Пример можешь посмотреть у себя в винде:

C:\ WINDOWS\ SAMPLES\ WSH\ Registry.js

Слегка модернизируем:

<script>
WshShell = new ActiveXObject("WScript.Shell");
WSHShell.Popup("Создает ключ HKCU\\MyRegKey со значением 'Ключ верхнего уровня'");
WSHShell.RegWrite("HKCU\\MyRegKey\\", "Ключ верхнего уровня");
</script>

При открытии такой HTML-страницы браузер спросит пользователя, можно ли создавать ActiveX объект и выполнит скрипт только в случае утвердительного ответа.

Из конференции Expert_FAQ

Вопрос

На страничке есть два фрейма, один из которых содержит ссылку. Существует ли возможность при нажатии на ссылку открывать новые странички в обоих фреймах?

Ответ

Есть такая возможность. Пишешь функцию:

<SCRIPT LANGUAGE="JavaScript">
<!-- // Activate cloak
function openurl(first,second)
{
top.frames["наименование фрейма 1"].location=first;
top.frames["наименование фрейма 2"].location=second;
}
// Deactivate cloak -->
</SCRIPT>
<FRAMESET ROWS="50,*"
frameborder="no" border=0>
<frame src="first.html" name="first"
scrolling="No"> <FRAME SRC="second.html"
NAME="second">
</FRAMESET>


Функцию размести в html-ке, которая эти фреймы содержит. В первом фрейме вставляешь:

<a href="javascript:top.openurl
('http://www.first.url','http://www.second.url');">


Random

Вопрос

В JS FAQe описывалось, как можно заменить содержимое практически любого тэга. У меня вопрос — как сделать так, чтобы информация для замены содержимого начинала скачиваться только после определенных действий пользователя, скажем, выбора пункта меню? Ведь если работать через src-поле JS-скрипта, загрузка нового содержимого будет происходитьвместе с загрузкой исходного файла.

Ответ

А кто мешает этот src прописывать динамически?

function loadScript(file, name)
{ var head = document.getElementsByTagName('head').item(0)
var scriptTag = document.getElementById('loadScript');
if(scriptTag) head.removeChild(scriptTag);
script = document.createElement('script');
script.src = file;
script.type = 'text/javascript';
script.id = name;
head.appendChild(script) return script;
};


Из конференции Expert_FAQ

Вопрос

В текстовом (или каком другом) файле хранятся рецепты, на страничке название (тип ссылка), при нажатии на которое открывается окно с данным рецептом + картинка (желательно). Можно ли это как-то сделать?

Ответ

Если все-таки использовать не один файл, а на каждый рецепт свой (это еще удобно и тем, что можно использовать стили для оформления), то можно все отлично сделать.

Делаем набор ссылок (хотя и не обязательно именно ссылок), место для отображения картинки и текста:

<head>
<script>
// Изменяет содержание IFRAMEов
function ChangeContent(strName)
{
document.frames.item(0).location.href = strName+".jpg";
document.frames.item(1).location.href = strName+".htm";
}
</script>
</head>

<body>
<table>
<tr>
<td rowspan="2" style="background:silver;">
<div style="width:200;height:590;overflow:auto;">
<!-- список рецептов -->
Торты <br>
<a href="#" onclick="ChangeContent('Tort1')"> Торт #1 </a> <br>
<a href="#" onclick="ChangeContent('Tort2')"> Торт #2 </a> <br>
Не торты <br>
<a href="#" onclick="ChangeContent('NeTort1')"> Не торт #1 </a> <br>
<a href="#" onclick="ChangeContent('NeTort2')"> Не торт #2 </a> <br>
<!-- … -->
<!-- конец списка -->
</td>
<td valign="top">
<!-- картинка -->
<iframe src="Intro.jpg" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" style="height:200px;width:590px;"> </iframe>
</td>
</tr>
<tr>
<td>
<!-- текст -->
<iframe src="Intro.htm" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" style="height:390px;width:590px;">
</iframe>
</td>
</tr>
</table>
</body>


Что-то типа того. Можно и нужно переделать разметку страницы.

Теперь при добавлении нового рецепта на сайт нужно только добавить туда куда надо:
<a href="#" onclick="ChangeContent('Tort314')"> Торт #314 </a>
и создать файлы "tort314.htm" и "tort314.jpg", а чтобы не хранить все это в корне, можно использовать папку или папки, задавая их имена при передаче префикса названий файлов в ChangeContent.

Peter

Вопрос

Подскажите, как с помощью JavaScript удалить, например, содержимое ячейки таблицы и прописать в нее новые данные?

Ответ

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!function repltext ()
{
var a = document.all;
a.td1.innerText = a.atext.value;
return false;
}
//-->
</SCRIPT>
</HEAD>

<BODY>
<table>
<TABLE>
<TR>
<TD>
<INPUT TYPE="button" Value=press onClick="return repltext();">
<INPUT TYPE="text" NAME="atext" Value="new text">
</TD>
<TD id="td1">Initial text</TD>
</TR>
</TABLE>
</BODY>
</HTML>


Проверено только для IE.

A.Z.

Я типа придумал уже, как это сделать. Алгоритм будет следующий.

1. делаем тег с id, например, как указано выше,
<div id="mymetka">
</div>

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

document.getElementById('mymetka').innerHTML

или

document.all('mymetka').innerHTML

С помощью этого свойства меняется наполнение между именованными тегами, в нашем случае между
<div id="mymetka">
</div>.

3. Естественно, что надо создать переменную, значение которой и будет присваиваться. Выглядеть это будет так:

document.getElementById('mymetka').innerHTML = mydata;

Вообще, есть также близкие свойства innerText, outerText, outerHTML.

Andrey Ushakov

Вопрос

Говорят на JS можно сделать так, что бы при загрузке страницы, спрашивался пароль, но не такой что б отмену нажал и все, а что бы спрашивал до тех пор пока юзер не введет правильный.

Ответ

Надо вставить скрипт:

<html>
<head>
<title>
</title>
<script language=JavaScript type=text/javascript>
var i="Сам пароль"
var j=prompt("Введите пароль",
"текст, который будет отображаться в поле ввода пароля, можно оставить пустым")
while (i!=j)
{ j=prompt("Введите пароль", "текст, который будет отображаться в поле ввода пароля, можно оставить пустым") }
</script>
</head>


Из конференции Expert_FAQ

Вопрос

Как включить select в зависимости от выбора в форме? Есть вот такая форма:

<form>
<input type="radio" name="but1" value="AAA">
<input type="radio" name="but1" value="BBB">
<select name="koord">
<option>as</option>
<option>uy</option>
</select>
</form>


и надо, чтоб при выборе «AAA» select был включен, а при выборе «BBB» — <select name="koord" DISABLED> — селект стал недоступен.

Ответ

<input type="radio" name="but1" value="AAA" onclick="koord.disabled=true;">
<input type="radio" name="but1" value="BBB" onclick="koord.disabled=false;">
<select name="koord" disabled>

Вопрос

А я хочу, чтобы во время загрузки посетителю показывалась надпись: дескать, все путем, все грузится, не уходи пока :)

Ответ

Вот код «Loading…» при загрузки страницы (пока вся страница не загрузится, посетителю будет показываться «Loading»):

<script language="javascript">
function vision() {
if(document.all) {
document.all.loading.style.visibility="hidden";
}
else {
document.layers.loading.visibility="hide";
}
}
</script>
</head>
<body onLoad="vision()">
<div id="loading" style="position:absolute; left:0; top:0; width:100%; height:100%;">
<table width="100%" height="100%" bgcolor="#c0c0c0">
<tr><td align="center" valign="middle">
Loading…\\тут можешь поставить любое другое слово,
например, "Загрузка".
</td></tr>
</table>
</div>


Пока вся страница не загрузится, посетитель будет видеть только твою надпись.

maloy

Вопрос

Имеется стандартный JavaScript по отправке формы почтой:

<FORM NAME = "mail_form" ACTION = "mailto:адрес?Subject=Send from Mail Form" METHOD = "POST" ENCTYPE = "text/plain">
<INPUT TYPE = "text" NAME = "Name" size="30">

ну, и т.д. Что нужно дописать в строчке <INPUT TYPE = "hidden" SIZE = 0 NAME = для того, чтобы в это скрытое поле вставлялся заголовок с названием страницы, с которой был вызван скрипт почтовой формы? Страница, с которой вызывается этот скрипт каждый раз разная.

Ответ

Вот, сделал вот такую страничку:

<HTML>
<HEAD>
<TITLE></TITLE>
<script language=javascript>
<!--
function setpageurl() {
window.form.pageurl.value=window.location
}
-->
</script>
</HEAD>
<BODY>
<FORM action="mailto:mymail@mail.ru?subject=test"
method=POST id=form name=form
enctype=text/plain>
<input type=hidden name=pageurl id=pageurl value="">
<INPUT type="submit" value="Послать" id=submit1
name=submit1>
</FORM>
<script language=javascript>
<!--
setpageurl()
-->
</script>
</BODY>
</HTML>

У меня работает. Высылает адрес страницы, с которой посылается форма.

Сурменок Павел

Вопрос

Как вставить в ячейку таблицы HTML-документа результат работы java-скрипта?

Ответ

Вот скрипт:

<script>
function InsertResult()
{ document.write ("it's result"); }
</script>

Вот табла:

<table>
<tr>
<td>
<script>
InsertResult();
</script>
</td>
</tr>
</table>

В общем, делаем функцию, а внутри <td> вызываем ее

Из конференции Expert_FAQ

Вопрос

Нужно вставить на Ява-скрипте в нужное место страницы огромный кусок html-кода. Как это сделать?

Ответ

В основном файле делаем так:

<script language="JavaScript"
type="text/javascript"
src="path/inserted.js">
</script>


Создаем файл inserted.js, в котором размещаем построчно нужный html-код:

var s = 'этот огромный код\n' +
'и еще маленькая тележка';
/* Этим оператором выводим всю нужную информацию */
document.writeln(s);


rts

Вопрос

Как сделать, чтобы при загрузке сайта появлялось окно без возможности изменения размера, без полос прокрутки, меню адреса и т.д., в котором открывался бы файл http://some.host/document.htm ?

Ответ

<script language="JavaScript">
<!--
function openWin(href,name) {
window.open (href,name,'location=0,scrollbars=0,toolbar=no,directories=no, menubar=no,status=no,resizable=no,width=174,height=288');
}
//-->
</script>


Сама ссылка будет выглядеть так:

<a href="javascript:openWin('http://some.host/document.htm','window_name')">

Вопрос

Дано окно с двумя фреймами. В одном есть форма с текстовым полем и кнопкой. Какой нужен код, чтобы при нажатии кнопки в другой половине загружался тот УРЛ, который был введен в текстовом поле?

Ответ

<script language="javascript">
function openurl()
{
url=document.my_form.url.value;
top.frames["second_frame"].document.location=url;
}
</script>

<form name="my_form">
<input type="text" name="url">
<input type="button" onclick="openurl();" name=button>
</form>


Random

Вопрос

У меня на сайте есть несколько ссылок-картинок, изображения которых изменяются при наведении курсора. Как закэшить эти картинки в начале загрузки сайта, чтобы потом время не отнималось при диал-апе?

Ответ

В разделе заголовка создай массив:

var arImages = new Array();

Его элементам присваиваешь картинки:

arImages[0] = new Image();
arImages[0].src = "your_image0.gif_or_jpg";
arImages[1] = new Image();
arImages[1].src = "your_image1.gif_or_jpg"

Поставь функцию-переключатель:

function onoff(im,sr)
{
im.src = arImages[sr].src;
}

Укажи в тэгах ссылки и картинки следующее:

<a href=# onMouseOver="onoff(img1,1)" onMouseOut="onoff(img1,0)"><img src="…" name="img1"></a>

Andrew Leshchuk


Или другой вариант. Помести эту часть между

<head></head>

<script language="JavaScript">
<!function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v3.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>


Здесь пропиши, какие картинки нужно предзагрузить.

<BODY onLoad="MM_preloadImages('pic1_sel.gif','pic2_sel.gif')">

Эту часть поставь где-нибудь в теле страницы:

<P ALIGN="CENTER">
<a href="link1.htm" onMouseOut="MM_swapImgRestore()"
onMouseOver="MM_swapImage('Image1','','pic1_sel.gif',1)">
<img name="Image1" alt="Ссылка 1" border="0" src="pic1_norm.gif"></a></P>
<P ALIGN="CENTER">
<a href="link2.htm" onMouseOut="MM_swapImgRestore()"
onMouseOver="MM_swapImage('Image2','','pic2_sel.gif',1)">
<img name="Image2" alt="Ссылка 1" border="0" src="pic2_norm.gif"></a></P>


Andrej R. Sirvutis

Вопрос

Прошу помощи: есть на сайте директория «index», в которой 4 поддиректории с разными по содержанию файлами «index.htm» в каждом. Как можно реализовать поочередную замену на сайте через задаваемый период времени (в днях) файла «index.htm» на аналогичный с директории «index1» с возвратом заменяемого файла «index.htm» на указанный адрес?

Ответ

Допустим, структура каталогов такова:

index/
index/index1/index.html
index/index2/index.html
index/index3/index.html
index/index4/index.html


В каталог index кладете файл index.html следующего содержания:

<HTML><BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
//--То что нужно задать--

//дата начала отсчета времени
var be= new Date(2001,08,1); //(год,месяц, день) — учтите, месяцы нумеруются с 0, поэтому 08 — это сентябрь
//количество подкаталогов вида index1,index2…indexDIRCOUNT
var dircount=4;
//количество дней, через которое нужно менять страницу на следующую
var dayloop =7

//--все остальное без изменений--

var now =new Date();
var dif =
Date.UTC(now.getYear(),now.getMonth(),now.getDate(),0,0,0)-
Date.UTC(be.getYear(),be.getMonth(),be.getDate(),0,0,0);
dif /=(1000*60*60*24);
dif = Math.floor(dif / dayloop);
dif %= (dircount);
dif++;
var s="index"+dif+"/index.html";
location.href= s;

//-->
</SCRIPT>
</BODY>
</HTML>


Потом ссылаетесь только на этот файл, а он уже сам перенаправит пользователя в нужный каталог.

A.Z.

Вопрос

Нужно заставить скрипт многократно передавать данные формы, но методом POST. Предложения (VBS optional, JS exeptable)?

Ответ

Да, это можно сделать с помощью JavaScript. Будет выглядеть так, простой ХТМЛ-код с кнопкой отправки, а JavaScript будет нажимать эту кнопку сколько хотите.

<HTML>
<HEAD>
<meta http-equiv="Refresh" content="1">
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>
</TITLE>
</HEAD>
<BODY onload="submit()">
<script Language="JavaScript"> function submit() { Timer= setTimeout(" (document.forreg.submit())",10); }
</script>
<form name="forreg" method="POST" action="mailto:vasya@lox.net"> area: љ
<input type="text">

<input type="submit" value="Go!" name="B1">
</BODY>
</HTML>


будет нажимать каждые 10 мс (если комп выдержит)

Из конференции Expert_FAQ

Вопрос

Как при наведении на ячейку таблицы изменить ее background, причем именно ячейки таблицы?

Ответ

Это пишешь перед всем
<SCRIPT language=JavaScript>
function Onmenu(obj) {
obj.style.cursor='hand';
obj.style.backgroundColor='#6666ff'
}
function Offmenu(obj) {
obj.style.backgroundColor='#ff0000'
}
</SCRIPT>

Тут представлена ячейка таблицы меняющая фон
<tr>
<td onmouseover="Javascript: Onmenu(this)"
onclick="location.href='link.htm'"
onmouseout="Javascript: Offmenu(this)" bgcolor="#FF0000» class="STYLE-MENU">
<a href="irk.htm">Новости</a>
</td>
</tr>

А вот так можно при наведении мыши изменить картинку 'kadr' на 'pic.jpg'
<a onMouseOver="MM_swapImage('kadr','','pic.jpg',1)"
onMouseOut=MM_swapImgRestore()
href="galleries/baikalsk/baikalsk.htm">Байкальский фестиваль</a>

Из конференции Inet_prog

Вопрос

Недавно осилил создание сайта и в связи с этим вопрос: как на сайте среди обычных доступных страниц создать страницу, которая бы открывалась только пользователям, знающим пароль, и как мне — администратору своего сайта — менять пароль?

Ответ

Предлагаемый способ запароливания не претендует на сверхсекретность, но, в свою очередь, у него нет никаких требований к хостеру (поддержка CGI,PHP,ASP…), достаточно лишь поддержки JavaScript на клиентской машине, что в подавляющем большинстве случаев присутствует. Взломать такую защиту не составит большого труда, но для среднестатистического пользователя она вполне пригодна.

Начнем. В удобное место своей страницы вставляем такое:

<input id=pa type=PASSWORD value="" size=20>
<button OnClick=CP()>OK</button>


Первая строка: поле для ввода пароля (с '*' вместо символов), size — определяет его ширину. Вторая строка: кнопка, при нажатии на которую проверяется корректность пароля и осуществляется переход на нужную страницу. Вообще-то вместо кнопки можно использовать любой элемент HTML — главное, чтобы обрабатывалось событие OnClick.

В самый конец файла, уже после </HTML> ставим такое:

<script src="p.jav"></script>

Здесь мы указываем, где у нас хранятся пароли и их обработчик, в данном случае файл p.jav.

Теперь помещаем на сервер файл «p.jav».

usera=3;
user0=new Array('Password','11.htm');
user1=new Array('Guest','12.htm');
user2=new Array('dddd','13.htm');
function CP(){
for(i=0;i if(eval('user'+i+'[0]')==pa.value){eval('location=user'+i+'[1]');i=10}
else location="nopass.htm"}


usera=?? — количество разных пользователей, для каждого из которых может быть присвоен свой пароль и своя страница. user0,user1…user9 — Описания паролей для каждого из юзверей и страниц, им присвоенных. Например, юзеру с паролем «Password» будет загружена страница «11.htm». nopass.htm в последней строчке скрипта будет грузится, если пароль указан неверно.

Sergey aka Z@K

Есть еще один вариант:

<script language="JavaScript">
function loadpage(){
document.location.href=document.frm.pswd.value + ".html"
}
</script>

<form name=frm>
Введите пароль: <input type=password name=pswd>
<input type=button value="Гут" onClick="loadpage()">
</form>


Создаем файл с паролем в качестве имени и расширением html. Что введешь в форму пароля — та страница и откроется. Если пароль неправильный — получишь 404.

Maxes

Вопрос

Как можно вынести скрипт в отдельный файл и потом ссылаться на него?

Ответ

Пишешь файл my.js такого типа:

-----------------

function my() {
alert("Primer")

}

-----------------

Потом в html файле подключаешь его…

<html>
<head>
<title>Primer</title>
<script language="javascript" src="my.js"></script>
</head>
<body>
<form>
</form>
</body>
</html>

Из конференции Expert_FAQ

Вопрос

Как можно получить случайное число в JavaScript в заданном диапозоне?

Ответ

Для генерации случайного числа мы воспользуемся JavaScript объектом Math, метод random которого генерирует случайное число от 0 до 1. Но, так как нам обычно нужны целые числа из некоего диапазона, то будет логичным написать небольшую функцию, которая все это будет делать автоматически. Вот как выглядит соответствующий фрагмент кода:

function getrandom(a,b)
{var min_random = a;
var max_random = b;
max_random++;
var range = max_random — min_random;
var n=Math.floor(Math.random()*range) + min_random;
return n;}


Перед использованием скрипта нужно лишь определить границы диапазона, в которых генерируется случайное число (соответственно, переменные min_random и max_random).

Из конференции Inet_prog

Вопрос

Есть следующее:
<SELECT NAME="show">
<OPTION value="0" <?if ($show=="0") {echo 'SELECTED';}?>>никуда не помещать</OPTION>
<OPTION value="1" <?if ($show=="1") {echo 'SELECTED';}?>>поместить на сайт</OPTION>
<OPTION value="2" <?if ($show=="2") {echo 'SELECTED';}?>>поместить в архив</OPTION>
<OPTION value="3" <?if ($show=="3") {echo 'SELECTED';}?>>удалить</OPTION>
</SELECT>
<? echo 'show=',$show;?>


Помогите на Java Script сделать так, чтобы после смены SELECTED $show сразу тоже сменялась бы и отображалась.

Ответ

Заменяешь <? echo 'show='…?> на <? echo '<input style="border-width:0pt;"
name=tshow value='.$show.'>';
а вот скрипт:

<SCRIPT LANGUAGE="JavaScript">
<!--
function ChangeShow(){

document.form.tshow.value=document.form.show.options[document.form.show.selectedIndex].value;
}
//-->
</SCRIPT>


У меня работает.

tericon

Вопрос

Нужно, чтобы пока все на странице не загрузится (рисунки и т.д.), ничего бы не показывалось, как только все загрузилось, сразу все видим! Если можно, сразу кодом.

Ответ

Вот код для Internet Explorer:

<HTML>
<HEAD>
</HEAD>
<BODY onLoad="document.all['dall'].style.display='block'">
<div id="dall" style="display:none">


сюда вписать все что находится на странице

</div>
</BODY>
</HTML>


Вот код для NetscapeNavigator 4.x:

<HTML>
<HEAD>
</HEAD>
<Body OnLoad="document.lall.visibility='show'">
<layer id="lall" visibility="hide" >


сюда вписать все что находится на странице

</layer>
</BODY>
</HTML>


Как это совместить для обоих браузеров — вот это уже проблема =)

A.Z.

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

sandetsky

Вопрос

Как определить тип браузера у посетителей и перенаправлять их на соответствующие страницы?

Ответ

<html>
<body>
<script language="JavaScript">
<!--
// Сначала определяем разрешение
if (self.screen) {// для браузеров 4-тых версий
width = screen.width
height = screen.height
}
else if (self.java) {// для NN3 (enabled Java)
var jkit = java.awt.Toolkit.getDefaultToolkit();
var scrsize = jkit.getScreenSize();
width = scrsize.width;
height = scrsize.height;
}else{
width = height = 'x'// для прочих браузеров
}
// Теперь выполняем нужное действие
if (width < 641) {
location.href='640/index.html' }
else if (width == 800) {
location.href='800/index.html' }
else if (width == 1024) {
location.href='1024/index.html' }
else if (width > 1279) {
location.href='hi-res/index.html' }
else {
location.href='default/index.html' }
//-->
</script>
</body>
</html>


Glader

Вопрос

У меня такой вопрос

<a href="javascript:window.open('temp.htm','example','scrollbars,
resizable,width=300,height=200');void(0);">Текст</a>

<a href="javascript:window.open('temp2.htm','example','scrollbars,
resizable,width=300,height=200');void(0);">Текст2</a>

При нажатии ссылки открывается новое окно (temp.htm), а при нажатии второй ссылки окно (temp2.htm) открывается в окне первой ссылки (temp.htm). Как открыть каждую ссылку в новом окне?

Ответ

Я думаю, надо заменить во второй сссылке «example» на что-нибудь другое. Это идентификатор окна. Например вот так:

<a href="javascript:window.open('temp.htm','example1','scrollbars,
resizable,width=300,height=200');void(0);">Текст</a>

<a href="javascript:window.open('temp2.htm','example2','scrollbars,
resizable,width=300,height=200');void(0);">Текст2</a>

Из конференции Expert_FAQ

Вопрос

Нужен скрипт, показывающий текущую дату. Желательно в формате: ДД.ММ.ГГГГ.

Ответ

<script language="Javascript" type="text/javascript">
<!var strMon = new Array(" января "," февраля "," марта "," апреля "," мая "," июня "," июля "," августа "," сентября "," октября ",Ѓ ноября "," декабря ");
var objDate = new Date();
var vDay = objDate.getDay();
var vMon = objDate.getMonth();
var vYear = objDate.getYear();
document.write('Сегодня ' + vDay + strMon[vMon] + vYear + ' года');
//-->
</script>


Andrew Leshchuk

Вопрос

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

Ответ

Для этого нужно воспользоваться язык JavaScript:

<html>
<head>
<title>
</title>
<script language=JavaScript
type=text/javascript>
var x=window.open("", "",
"scrollbars=no,width=ширинаpx,height=высотаpx") x.blur()
</script>
; </head>
<body>
</body>
</html>


Из конференции Expert_FAQ

Вопрос

Как проверить, что в форму введено обязательно число.

И еще: как сложить числа, введенные в несколько ячеек формы? У меня они складываются как строки (т.е. 1+2=12)

Ответ

Ответ на вопрос 1.

Пусть переменная v — то, что надо проверить на наличие или отсутствие чего либо, кроме цифр

MyReg = new RegExp("\\D+");
if (!MyReg.test(v))
{
// В переменной v только цифры
} else
{
// В переменной v не только цифры
}

Объяснение: Есть такой объект в JavaScript RegExp. В первой строке мы его создаем. При этом мы будем сравнивать строку с образцом "\\D+", который говорит о том, что нам надо все, кроме цифр.
Ну и во второй строке мы методом test сравниваем переменную с образцом.

Ответ на вопрос 2.

Пусть v1 и v2 — переменные, которые надо сложить, тогда:
v3=eval(v1+"+"+v2);

Теперь v3 — это сумма переменных. Фактически функции eval передается строка :"число+число". Она ее и выполняет и выдает результат.

Из конференции Expert_FAQ

Вопрос

Из первой странички открываю новый документ в новом окне. Там есть форма с полем и кнопкой. Могу я прочесть в переменную первого документа содержимое поля второго документа?

Ответ

А почему бы и нет? Если ты открываешь новое окно через JavaScript, т.е. через window.open, ты можешь присвоить его какой-нибудь переменной, например:

myWindow = window.open(…)

а дальше действовать через этот самый myWindow.document, типа

myWindow.document.myForm.myCheckbox.value

Можно пойти дальше, т.е. при нажатии на кнопку второго документа вызывается функция из первого документа, например:

window.opener.myFunc1(document.myForm.myEdit1.value);

где myFunc1 — функция, определенная в первом документе, и ей в качестве параметра передается значения одного из полей формы.

Goltsov Dmitry

Вопрос

Как реализовать функцию автоматического занесения страницы в «Избранное»?

Ответ

<script>
window.external.AddFavorite(УРЛ, ЗАГОЛОВОК);
</script>


Игорь Фролов

Вопрос

Подскажите, как мне с помощью document.write() ввести строку

onmouseover='dropit(event,(nn6)?'dropmenuAll'
:dropmenuAll,
'document.dropmenuAll',445)';

Я пробовал так:

document.write("onmouseover='dropit(event,(nn6)
?'dropmenuAll':dropmenuAll,
'document.dropmenuAll',445)';");

но ничего не получается

Ответ

И ничего не должно получаться, попробуйте строку разбить на части, т.е:

document.write("string 1" + "string 2" + "stri" + "ng 3")

или же тоже по кусочкам присвоить переменные, а потом вывести переменные:

var x="string 1"
var x2="string 2"
var x3="stri"
var x4="ng 3"
document.write(x + x2 + x3 + x4)

Из конференции Expert_FAQ

Вопрос

Как сделать выпадающий случайный номер, типа: 878787-7877-8788878?

Ответ

Самый простой способ — это метод объекта Math.random().
Он выдает случайное число больше 0 и меньше 1, Вы его умножаете на 10, округляете методом Math.round(n), math.ceil(n) или Math.floor(n); выдается число от 0 до 10. Если необходимы определенные числа, например, только 7 или 8, — надо поставить генерацию в функцию, где выполняется while до тех пор, пока не «родится» нужное число.

Есть и более изощренный способ: использование тригонометрических функций от текущего времени, но тут надо ставить задержку выполнения, желательно тоже случайную и достаточно большую — примерно от секунды до, скажем, 5. В таком случае числа выглядят «более» случайными.

*******

Для получения чисел из заданного диапазона, отличного от 0-10, организовывать цикл несколько громоздко. Гораздо проще использовать формулу:
А = round(random()*(Max-Min))+Min
Например, для получения чисел из диапазона 23 — 29:
А = round(random()*6)+23
Функция "random()" может быть стандартной или тригонометрической и выдавать случайные числа из диапазона 0 — 1.

krenon

Вопрос

Помогите, пожалуйста!

1. Как сделать preload картинок на странице?

2. Как сделать скрипт, чтобы программы, вроде Teleport и др., скачивающие директории сайта, не могли этого делать. (Я видел на одном сайте такую фишку, начинаешь скачивать и вылетает сообщение, типа запрещено скачивание)

Ответ

1) Для того, чтобы картинки загружались предварительно надо в дескрипторах <script…> </script> написать:

var name_image=new Image(width, heght)

name_image.src=URL

Например нам нужно чтобы предварительно загрузилась картинка под именем xxx.jpg в папке images

var xxx_kartinka=new Image(35, 35)

xxx_kartinka.src="../images»

2) Такая функция есть на многих хостах.

Из конференции Expert_FAQ

Вопрос

Как сделать, чтобы при клике на маленькую картинку, при наведении на которую меняется курсор, в новом окне с заданными параметрами окрывалась она же бОльшего размера? Нужно, чтобы новое окно было равно размерам большой картинке, без отступов и без resize.

Ответ

function zoom(){
paint_win = window.open('', 'PhotoWindow',
'width=' + (paint[gal][pnt].zx + 20)
+ ' ,height=' + (paint[gal][pnt].zy + 20) +
', resizable=0, scrolbars=0');
// собственно вот окно, и открывается этим window.open, а размеры width и height приходится задавать заранее :(
paint_win.document.open();
paint_win.document.write('<html><head>');
// а дальше просто всякие красивости
// для ИЕ фомируется заголовок окна. NN все равно
не хочет ничего понимать по-человечески
if (isBrowserOK) {
var strtitle = '';
if (paint[gal][pnt].Author != '') strtitle += paint[gal][pnt].Author;
if (paint[gal][pnt].Name != '')
{
strtitle += (gal == 7) — ', ' : ' <';
strtitle += paint[gal][pnt].Name;
strtitle += (gal == 7) — '' : '>';
}
if (strtitle == '') strtitle = Gallery[gal].Name;
paint_win.document.write('<title>' + strtitle + '</title>');
}
// ну и, собственно, тело документа paint_win.document.write('</head><body><table
width=100% border=0
cellspacing=0 cellpadding=0><tr><td
align=center valign=middle><img
src="images/gallery/' + gal + '/' + pnt +
'z.jpg"
border=0></td></tr></table></body></html>')
;
paint_win.document.close();
}


Andrew Leshchuk

Вопрос

Как сделать раскрывающееся меню, как на Yahoo, например, но попроще?

Ответ

<SCRIPT LANGUAGE="JScript">
function doit() {
if (smth.style.display=="none")
{
smth.style.display="";
}
else
{
smth.style.display='none';
}

}
</SCRIPT>

<p onclick="doit()"
style="cursor:hand">Menu</p>
<p id=smth style="display:none">

<table width=90>
<a href="doc1.htm">Document #1</a>
<a href="doc2.htm">Document #2</a>
<a href="doc3.htm">Document #3</a>
</table>
</p>

Вопрос

Делал раскрывающийся список по книге А. Матросова «HTML 4.0 в подлиннике», но страница показывает ошибку (строка 32, символ 1, предполагается наличие объекта). Пробовал добавлять тэги html, body, рисовал item.jpg, все напрасно.
Скажите в чем ошибка?

Ответ

Все намного проще:

<select name="color">
<option value="black">Черный</option>
<option value="white">Белый</option>
<option value="red">Красный</option>
<option value="green">Зеленый</option>
<option value="blue">Синий</option>
<option value="cyan">Голубой</option>
<option value="yellow">Желтый</option>
</select>


Из конференции Expert_FAQ

Вопрос

Я занимаюсь сайтостроением, и передо мной стоит следующее задание:

Человек заказывает журнал. При заполнении анкеты появляется порядковый НОМЕР анкеты. Как мне сделать так, чтобы после нажатия кнопки «ОК» этот НОМЕР увеличивался на одну единицу и где-то запоминался? Затем при следующем появлении анкеты этот НОМЕР считывался и появлялся. Как лучше сделать эту операцию? И возможно ли это сделать с помощью только JavaScript — без cgi-скриптов?

Ответ

Это можно сделать, используя файлы cookie:

<script language="JavaScript"> function get_cook()
{
cook_str=unescape(document.cookie) eq_loc=cook_str.indexOf("=") cook_val=cook_str.substring(eq_loc + 1) return cook_val
}
// Получение значения var number=get_cook()
// Проверка существования файла куки if (!number)
{
// если нет значение, то анкета заполняется первый раз number=1 writeln("Порядковый номер анкеты: " + number)
}
else
{
// в противном случае уведичивается на еденицу number++ document.writeln("Порядковый номер анкеты: " + number)
}
//Задание значения document.cookie="counter_cook"+number </script>


Из конференции Expert_FAQ

Вопрос

Как через JavaScript изменить содержание iframe?
Так не работает:

<HTML>
<HEAD>
   <script language=jscript>function change_content(){Content.src="Page2.htm";}</script>
</HEAD>
   <BODY>
     <INPUT type="button" value="Button" onclick="change_content()">
     <iframe id="Content" src="Page1.htm"></iframe>
   </BODY>
</HTML>

Ответ

<HTML>
<HEAD>
<script language="jscript">
   function change_content()
   {
     document.all.Content.src="Page2.htm";
   }
</script>
</HEAD>
<BODY>
   <INPUT type="button" value="Button" onclick="change_content()">
   <iframe id="Content" src="Page1.htm"></iframe>
</BODY>
</HTML>


Novikov Dmitry

Вопрос

Каким образом вычислить возраст человека, зная его точный день рождения?

Ответ

<SCRIPT LANGUAGE="JavaScript">
<!today = new Date()
den_r = new Date("April 09, 1972")
msPerDay = 24 60 60 * 1000 ;
// количество миллисекунд в дне
daysLeft = (today.getTime() ? den_r.getTime()) / msPerDay;
// сколько дней прошло
daysLeft = Math.round(daysLeft);
// округление
let= Math.floor(daysLeft/365);
// сколько лет прошло mes= Math.round((daysLeft-let*365)/30);
// сколько месяцев после полного к-ва лет
document.write("Сейчас Пете Пупкину " + let+" лет
и "+mes+" месяца(ев)");
// вывод результата
// -->
</SCRIPT>


Сергей Паюк

Или вот такой, уже переработанный, скрипт:

<SCRIPT LANGUAGE="JavaScript">
<!function vozrast(den_r_s)
{
var today = new Date();
// функция для подсчета количества лет и месяцев между датой var den_r = new Date(den_r_s);
// введенной и текущей.

var let=today.getYear()-den_r.getYear();
//кол-во лет (условно) var mes=today.getMonth()-den_r.getMonth();
//кол-во месяцев (условно) var dney = today.getDate()-den_r.getDate();
var den__r = den_r.getDate();
// чисто день, когда родился var den__s = today.getDate();
// сегодняшнее число
if (let > 1900) { let = let -1900 }
// из-за нескладухи с Оперой
if (mes < 0)
{ let = let — 1
// количество лет mes = 12 — Math.abs(mes) }
// количество месяцев
if ((mes == 0) && (den__r>den__s))
{ mes = 12
let = let — 1
}
// осталось меньше месяца до Дня рождения
if ((mes == 0) && (den__r<den__s)) { mes = 0 }
// день рожд уже прошел if ((dney < 0) && (mes != 0))
{ mes = mes — 1 }
// количество месяцев

let_n = let % 10;
var let_s = '';

if (let_n == 1) { let_s = ' год '; }
if ((let_n > 1) && (let_n < 5)) { let_s = ' года
'; }
if ((let_n == 0) || (let_n == 9) || ((let_n > 4)
&& (let_n < 9))) { let_s = ' лет '; }

if (mes == 1) { mes_s = ' месяц '; }
if ((mes > 1) && (mes < 5)) { mes_s = ' месяца '; }
if ((mes==0) || ((mes > 4) && (mes < 13)))
{ mes_s = ' месяцев '; }

var str_show1 = let+let_s;
var str_show2 = mes +mes_s;
if (mes == 0)
{ var str_show2 = ' '; }

if ((today.getMonth() == den_r.getMonth()) &&
(today.getDate() == den_r.getDate()))
{
str_show1 = 'сегодня ровно ';
str_show2 = let+let_s;
}
if ((mes == 0) && (den__r<den__s))
{
str_show1 = 'уже ';
str_show2 = let+let_s;
}
if ((mes == 0) && (den__r>den__s))
{
str_show1 = 'почти ';
str_show2 = let+let_s;
}

document.write(str_show1+str_show2);
}
// -->
</SCRIPT>


Сергей Паюк

Использование:

<SCRIPT LANGUAGE="JavaScript">
<!vozrast("April 09, 1972")
// использование функции "Возраст" // -->
</SCRIPT>


Сергей Паюк

Вопрос

Каким образом я могу поставить на свой сайт Голосование?

Ответ

Например,
используя mailto как action для формы — в этом случае используется почтовая программа клиента и отсылается сообщение на указанный адрес. Пример:

<html>
<head>
<title>EMAIL TEST</title>
</head>
<body>
<center>
<h1>ВОПРОС: </h1>Как вам нравится погода сегодня?
</center>
<form action="mailto:you@mail.ru?subject=Result" enctype="text/plain" method="post">
<table border="1" width="90%">
<tr>
<td width=1>
<input type="radio" name="result" value="Очень" checked>
</td>
<td>Очень</td>
</tr>
<tr>
<td>
<input type="radio" name="result" value="Не очень">
</td>
<td>Не очень</td>
</tr>
<tr>
<td>
<input type="radio" name="result" value="Совсем не нравится">
</td>
<td>Совсем не нравится</td>
</tr>
</table>
<input type=submit value="Голосовать" name="Submit">
</form>
</body>
</html>


Когда пользователь нажимает кнопку «Голосовать» на адрес you@mail.ru отправится e-mail примерно следующего содержания:

result=Очень
Submit=Голосовать

Из конференции Expert_FAQ

Вопрос

Кто какой Java-script редактор посоветует?

Ответ

Visual Studio.

EditPlus2. Весит немного, синтаксис подсвечивает. Поддерживает не только JavaScript. Есть шаблоны для вставки стандартных команд и кое-какая реализация CodeTemplates. Это когда пишем допустим if <пробел> а редактор автоматом генерит:

<p>
<p;>
if ()
{
<p>
<p>}
<p>
<p>


HomeSite. Но уж больно он тяжеловесный — чтобы изменить пару строчек в скрипте, такую махину грузить…

Если нужны какие-нибудь стандартные скрипты, можно поюзать Macromedia DreamWeaver (подсвечивает Java Script) или SNK Visual HTML Workshop.

ScriptBuilder (во всех смыслах последняя версия — 3.0, дальнейшие разработки не ведутся года с 1999, однако вещь удобная).

Митрич, A.Z.

Мой совет — используете Блокнот. Так будете отлично знать JavaScript и HTML.

vbscripter

Вопрос

Мне нужно сделать так:
если юзер не ввел в форму текст, то чтобы курсор возвращался обратно в форму, до тех пор пока что-нибудь не введут.

Ответ

<script
language=JavaScript
type=text/javascript>
function vernis(mesto)
{ if (mesto.value=="")
{ alert("Введи че-нидь") mesto.focus() }
else if (mesto.value=="dаn")
{ alert("Ты крут, на тебе розовый цвет")
document.bgColor='pink' }
else { } }
</script>
<input type="text"
width=35
onBlur="javascript:vernis(this)">


Поясняю:
Если юзер ничего не вводит, то ему говорят введи что-нибудь, и курсор возвращается в форму, если юзер вводит dan, то что-нибудь происходит (в нашем случае цвет документа меняется), если же что-нибудь другое вводит (отличное от пустой строки и dan), то ничего не происходит. Тут сами поменяйте под свой лад.

Из конференции Expert_FAQ

Вопрос

Есть меню на JavaScript с элементами развертывания (жмешь на пункт — открываются подменю). При этом перезагружается вся страница. Подскажите, как можно сделать чтобы меню разворачивалось и наоборот, не перезагружая всю страницу.

Ответ

Смотри http://www.swed.com.ua/links.html
Тут я реализовал подобное. Однако недостаток в том, что грузиться весь файл размером ~108 kb.

Swed

Вопрос

У меня на странице, при ее загрузке вылетает куча рекламы. Можно ли от нее избавиться с помощью JavaScript?

Ответ

Скорее всего нет, если только не вписан какой-нибудь скрипт по открыванию рекламы, и то, если вы его удалите, то в большинстве случаев, хост опять его туда впишет!

Из конференции Expert_FAQ

Ну частично можно! Но это в том случае, если хост вешает вам рекламу после кода. Т.е. после </html>
Пиши после </html>:
<Script language="JavaScript1.8">
<Script language="JavaScript5.6">
<Script language="JavaScript9.3">
Таким образом ты объявляешь несуществующую версию JavaScript и код не выполнится!

Sferacom

Вопрос

Можно ли узнать в процессе подгрузки с помощью JS, сколько процентов загрузилось картинки, но не myimg.comlete, которое говорит что загрузка завершена.

Ответ

Нельзя. Только загружена картинка полностью или нет.

Вопрос

Я в js пока не очень разбираюсь, поэтому хотел бы уточнить, что в нижеприведенном коде может быть неправильно? Он предназаначен для показа скрытого слоя. Во Фронтпейдже пишет, что типа document.layers не является объектом…

<!--Функция для видимости/невидимости слоя-->
<SCRIPT LANGUAGE="javascript">
<!--
function showLayer(layerName)
{
document.layers[layerName].visibility='visible'
}
function hideLayer(layerName)
{
document.layers[layerName].visibility='hidden'
}
//-->
</SCRIPT>

<STYLE TYPE="text/css">

/**определяем параметры слоя**/

#Mylayer
{
z-index: 3;
position: absolute;
top: 35px;
left: 375px;
visibility: hidden;
}
</STYLE>


</head>

<body>

<!--вызов функции-->
<a href="#" onClick="showLayer('Mylayer')" >Push it</a>

<!--содержание слоя в теге div-->
<div id="Mylayer">
<table width="100" height="60">
<tr>
<td>Menu</td>
</tr>
</table>
</div>

Ответ

Вместо document.layers[layerName].visibility='hidden'
пиши document.all[layerName].style.visibility='hidden';

Или так:
document.getElementById('Nav3').style.visibility='visible';

Этот способ работает и в IE и в Mozille, но когда мы его прописываем не как функцию, а как непосредственно свойства к обработчику событий, т.е. так:

<a href="#" onClick="document.getElementById('Mylayer').style.visibility='visible'" onBlur="document.getElementById('Mylayer').style.visibility='hidden'">Push it </a>

Если же мы захотим сделать это все дело в виде функции, то придется, наверное, делать код под каждый браузер. Вроде бы так:

<!--Функция для видимости/невидимости слоя-->
<SCRIPT LANGUAGE="javascript">
<!--
function showLayer(layerName)
{
LayObj = eval("document.getElementById('" + layerName + "').style");
LayObj.visibility='visible';
}
function hideLayer(layerName)
{
LayObj = eval("document.getElementById('" + layerName + "').style");
LayObj.visibility='hidden';
}
//-->
</SCRIPT>


И вроде бы для Netsсape style.visibility заменяется просто на visibility.

Andrey, tericon, A.Z.

Вопрос

Мне нужна программа, которая заменяла бы определенный текст в файле (допустим index.html) на другой.

Ответ

Это достаточно простая операция и она встроена во множество HTML-редакторов. Я пользуюсь Macromedia HomeSite. В нем есть функция Extended Replace (Search|Extended Replace).

Она позволяет заменять куски текста в текущем документе, во всех открытых в HomeSite документах, в проекте HomeSite или во всех файлах в указанной папке (расширения файлов, в которых следует производить замену так же можно указывать). Возможна также замена регулярных выражений, есть куча опций: учитывать регистр (Match Case), пропускать тэги при поиске (Skip tags while searching), создавать backup (Make backups) и другие.

Точно такая же система расширенной замены присутствует в другом редакторе от Macromedia — ColdFusion.

Из конференции Expert_FAQ

Вопрос

Есть несколько рассылок. Нужна форма для подписки. В поле юзер будет вносить email и выбирать, на какую из данных рассылок хочет подписаться.

Ответ

Итак, как бы это сделал я…
Для начала создаем страничку с формой для заполнения. Оформление странички — дело вкуса, но включаем в ее код следующее:

<table>
<script language="JavaScript">
<!pr=window.location.protocol;
hs=window.location.hostname;
ss=pr+'//'+hs+'/cgi-bin/esend.cgi';
var s='<form method="POST" action='+ss+'>';
document.writeln(s); -->
</script>
<tr>
<TD>
<b>Введите Ваше имя:</b>
 
</TD>
<TD>
<INPUT TYPE="text" name="Name" Value="" size="44">
</TD>
</tr>
<tr>
<TD>
<b>Ваш E-Mail :</b>
</TD>
<TD>
<INPUT TYPE="text" name="EMail" Value="" size="44">
</TD>
</tr>
<tr>
<TD colspan="2">
<p align="center"><b>Выберите интересующую рассылку (одну):</b>
</TD>
</tr>
<tr>
<TD colspan="2">
<input type="checkbox" name="C1" value="ON">Основные
проблемы грибоводства<BR>
<input type="checkbox" name="C2" value="ON">Некоторый
вопросы дрожжеведения
</TD>
</tr>
<tr>
<TD>
<p align="center">
<INPUT TYPE="submit" NAME="submit" VALUE="Подтвердить">
</p>
</TD>
<TD>
<p align="center">
<INPUT TYPE="reset" VALUE="Очистить">
</p>
</TD>
</tr>
</TABLE>


Дальше — оформляй страничку как захочешь…
Теперь… Если ты заметил, то данный код ссылается на скрипт
esend.cgi, который должен быть в папке /cgi-bin/ твоего сервера. Этот
скрипт получает от данного кода введенные параметры и обрабатывает их.
Примерно этот скрипт может выглядеть так:

#!/usr/bin/perl
#esend.cgi
#раздел процедур и функций
sub urldecode{
local($val)=@_;
$val=~s/\+/ /g;
$val=~s/%([0-9a-hA-H]{2})/pack('C',hex($1))/ge;
return $val;
}
#конец раздела процедур и функций
if($ENV{'REQUEST_METHOD'} eq 'GET'){$query=$ENV{'QUERY_STRING'};}
elsif($ENV{'REQUEST_METHOD'} eq 'POST')
{sysread(STDIN,$query,$ENV{'CONTENT_LENGTH'});}
#занесение данных в файл
#if($query ne ''){
@formfields=split(/&/,$query);
foreach(@formfields){
if(/^Name=(.*)/){$Name=urldecode($1);} #получение имени клиента
if(/^EMail=(.*)/){$EMail=urldecode($1);} #получение его EMail
if(/^C1=(.*)/){$C1=urldecode($1);} #инфа по подписке №1
if(/^C2=(.*)/){$C2=urldecode($1);} #инфа по подписке №2
}

$Owner="Твой сайт"; #это от кого, т.е. от тебя

if($C1 eq "ON")
{
$Mess="SUBSCRIBE Основные проблемы грибоводства";
}
if($C2 eq "ON")
{
$Mess="SUBSCRIBE Некоторые вопросы дрожжеведения";
}
open(MAIL, '| /usr/bin/sendmail -t -oi'); #отправка запроса

$Message=$EMail."\n".$Message;

#если для отправки EMail используешь другую программу или она
#находится в другом месте, то исправь строчку отправки запроса

print MAIL <<EOF;
To: someRobot\@domail.com #писать именно так \@
From: $Owner
Subject:
$Message
EOF
close MAIL;

#раздел программ
print "Content-Type: text/html\n\n";
print "<html><head>\n";
print "<title>Subscribe Service</title>\n";
print "<META content=\"text/html; charset=windows-1251\" http-eqiuv=Content-Type>\n";
print "</head><body>";
print "<font color=#000000>Вы зарегистрированы как подписчик. Спасибо!</font>";
print "</body></html>";


Messire

Вопрос

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

Ответ

1. Возможно ты копируешь текст кода вместе с тегами <script>. Этого делать не надо. Только код

2. Возможно тот код, который выполняешь до подключаемого кода неверен.

3. Проверить можно так: в подключаемом файле вместо кода пишешь document.alert('ля-ля-ля'); Если выдасть это сообщение, то ошибка в самом коде, если нет, то ошибка в подключении.

Из конференции Expert_FAQ

Вопрос

Подскажите, как с помощью JavaScript удалить, например, содержимое ячейки таблицы и прописать в нее новые данные?

Ответ

Объектная модель в IE позволяет с документом делать все что хочешь. Вплоть до удаления и замены тэгов.

<table>
<tr>
<td ID="a">12345467</td>
<td ID="b">12345467</td>
<td ID="c">12345467</td>
</tr>
</table>
<script>
document.all.a.innerText="54321"
document.all.b.innerHTML="54321"
document.all.c.innerHTML="<b>987654321</b>"
</script>


Из конференции Inet_prog

Вопрос

С каким языком программирования схож по сложности язык JavaScript, в чем отличия Java от JavaScript?

Ответ

JavaScript по «сложности» (изучения) похож на Basic (в частности Visual). Есть даже альтернатива Джваскрипту — VBScript. Только в отличие от VisualBasic-а основной упор сделан на работу с объектной моделью браузера, но и просто работать с объектами можно, только нельзя скомпилировать программу на JavaScript в отдельное приложение.

Java это вообще отдельная песня. Это объектно-ориентированный язык программирования, «выросший» из C++. На нем можно написать что угодно, но он и гораздо сложнее JavaScript, т.е. это разные весовые категории. Для работы с интернетом (браузером) на Java пишутся апплеты (applets) которые обрабатывается специальной Java-машиной (JavaScript обрабатывается твоим браузером).

Также на Java можно написать отдельные программы (и скомпилировать их в исполняемые файлы), тогда нет ограничений присущих апплетам (из соображения безопасности), например на доступ к локальным файлам и дискам.

Из конференции Expert_FAQ

Вопрос

Подскажите хороший сайт где можно взять (в большем количестве)J скрипты.

Ответ

http://scriptic.narod.ru/
http://www.softlinks.ru/

Из конференции Expert_FAQ

Вопрос

Как нужно связывать внешний файл с некоторой функцией JavaScript (например: «functions.js») с ее вызовом внутри HTML документа.

Ответ

Например есть файл ad.js и в ней функция reklama(). Нужно импортировать функции из внешнего файла пустым блоком script с атрибутом src равным имени внешнего файла (третья строчка в примере). А затем уже где надо вызывать функции так же, как и если бы они были в html файле.

<HTML>
<Head>
<Script language=javascript src="ad.js">
</Script>
<Script language=javascript>
<! function showad () { //---код- reklama () //---код- } -->
</Script>


Из конференции Expert_FAQ

Вопрос

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

Ответ

Вот пример, если я правильно понял про «текстбокс» и «кликание» :-)

<html> <head> <title>Пример</title> </head> <body> <textarea rows='5' cols='50' onMouseDown='this.value=""'> </textarea> </body> </html>

Из конференции Expert_FAQ

Вопрос

Где можно взять такой скрипт, чтобы при загрузке страницы определялось время дня и вместе с этим загружалась картинка соответствующая этому времени?

Ответ

<SCRIPT language=JavaScript>
theDate = new Date();
theHours = theDate.getHours();
if (theHours >= 0) theText = "<img src='Доброй ночи.gif'>";
if (theHours >= 4) theText = "<img src='Доброе утро.gif'>";
if (theHours >= 11) theText = "<img src='Доброе день.gif'> ";
if (theHours >= 18) theText = "<img src='Добрый вечер.gif'>";
if (theHours >= 22) theText = "<img src='Доброй ночи.gif'>";
document.writeln (theText);
</SCRIPT>


Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация