PDA

Просмотр полной версии : Скрипты Java


Nefelim
22.12.2005, 19:15
Первый буду. Не нах ли? ;)

Итак, здесь хотелось бы обсуждать разнообразные скрипты на языке Java.

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

Собственно, в настоящий момент мне глубоко интересен такой скриптик...
Есть текстовый файл определенной структуры. Скажем, такой:

наименование_параметра = значение1, значение2, значение3, ..., значениеN;

Нужен скрипт, который бы считывал эти параметры из этого файла и подставлял их в HTML-форму при загрузке страницы. Такая своеобразная БД получается. вегуд, правда, сказал, что это проще на PHP написать, но мне с JS-ами проще...

Nefelim
22.12.2005, 23:13
Требую прикрутить вот это (http://www.woweb.ru/index.htm?a~g;id~1025278700;t~2) к Главной! :)

Жаль, но нужного скрипта я пока не нашел - специфический слишком. Буду компилировать сам, наверное...

вегуд
22.12.2005, 23:23
Первый буду. Не нах ли? :rolleyes:
...


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

если хочешь пользовать JS...
------ твоя страница.html ------
<script src="mydata.js"></script>
Первое значение параметра 1 вот такое: <script> document.write(myparam1[0]); </script><br>
А второе значение параметра 1 вот такое: <script> document.write(myparam1[1]); </script><br>
А третье значение параметра 2 вот такое: <script> document.write(myparam2[2]); </script><br>
-------------------------------

при этом файл с данными будет в виде js:
---- mydata.js ------
var myparam1 = new Array('значение1', 'значение2', 'значение3');
var myparam2 = new Array('значение1', 'значение2', 'значение3');
var myparam3 = new Array('значение1', 'значение2', 'значение3');
...
------------------------


Если хочешь по-хорошему, на php:
----- loadparam.php -----
<?php
$mydatafile = 'mydata.txt';
$lines = file($mydatafile);
while (list(, $line) = each($lines)) {
list($param, $values) = explode('=', $line);
$param = trim($param);
$values = trim($values);
$$param = explode(',', $values);
}
?>
----------------

при этом файл c данными
----- mydata.txt ----
myparam1=Маша,Петя,Вова
myparam2=яблоки,груши,сливы
------------------------

и наконец твой файл
----- твой файл .php -----
<?php
include 'loadparam.php';
?>

<?php echo $myparam1[0] ?> любит <?php echo $myparam2[2] ?> (результат: Маша любит сливы)
<?php echo $myparam1[1] ?> обожает <?php echo $myparam2[1] ?> (результат: Петя обожает груши)
<?php echo $myparam1[2] ?> в гробу видел эти <?php echo $myparam2[0] ?> ...

(можно вместо <?php echo $myparam1[0] ?>
использовать конструкцию <?=$myparam1[0]?>
но это порочная практика ;) )
--------------------------------

в дальнейшем, если ты захочешь перейти на
базу данных - тебе надо будет только заменить loadparam.php


можно совместить эти два подхода
и сделать чтобы php-скрипт генерил js-скрипт.
зачем? например, чтобы php-скрипт положить
на одном сайте, и использовать результат его работы (js-скрипт)
на других сайтах.

пример: скрипт лежит на ф-сайте и выдает
js-скрипт, где в переменных определяются последние заголовки новостей:
var news = new Array();
news.push({title: "А где РПЛ?", author: "Akar", postdate: "2005-12-22 14:00:00"});
news.push({title: "А где WL?", author: "Akar", postdate: "2005-12-22 12:00:00"});
news.push({title: "А где вегуд?", author: "Akar", postdate: "2005-12-22 11:00:00"});

вы этот скрипт подключаете у себя на страничке:
<script src=http://fifasoccer.ru/news/export.php></script>
и используете эти переменные:
Последняя новость с ф-сайта: <script> document.write(news[0].title); </script>, автор:
<script> document.write(news[0].author); </script>, время публикации: <script> document.write(news[0].postdate); </script>

таким образом, ваша страница без php и не имея доступ к базе
данных наших новостей таки показывает желаемую информацию.


для ранее рассмотренного случая - имеем измененный loadparam.php
который будет читать mydata.txt и выдавать js-скрипт
(выходной файл будет примерно такой же как и в начале поста - mydata.js)
----- loadparam.php -----
<?php
$mydatafile = 'mydata.txt';
$lines = file($mydatafile);
while (list(, $line) = each($lines)) {
list($param, $values) = explode('=', $line);
$param = trim($param);
$values = explode(',', trim($values));
echo "var $param = new Array('".join("','", $values)."');\n";
}
?>
----------------

---- mydata.txt ------
myparam1=значение1,значение2,значение3
myparam2=значение1,значение2,значение3
myparam3=значение1,значение2,значение3
...
------------------------



и вот мы его используем в странице:
------твоя страница.html------
<script src="http://somesite.ru/loadparam.php"></script>
Первое значение параметра 1 вот такое: <script> document.write(myparam1[0]); </script><br>
А второе значение параметра 1 вот такое: <script> document.write(myparam1[1]); </script><br>
А третье значение параметра 2 вот такое: <script> document.write(myparam2[2]); </script><br>
-------------------------------


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


p.s.
вообще, сейчас модно выдавать xml,
а такой гемор с генерированием js-скрипта
относится к разряду хитрожопств.
однако, такие штуки работали и 5 лет назад, когда xmlом еще еще не пахло,
работают и сейчас... а значит - почему бы и нет?

p.p.s.
работу кода не проверял, мог где-нибудь облажаться :rolleyes:

Nefelim
23.12.2005, 07:33
Э-э-э... Спасибо, буду думать... :cool:

Posho
26.12.2005, 15:12
у меня вопрос к вегуду: ты не поделишься скриптом для проигрывания музыки? ну тем, что на ф-сайте стоит?

Nefelim
26.12.2005, 21:39
А если попробовать сохранить любую f-страничку на диск и поискать там .js-файл? Или, например, поискать в global.js? ;)

Posho
26.12.2005, 22:23
А если попробовать сохранить любую f-страничку на диск и поискать там .js-файл? Или, например, поискать в global.js?
я уж поискал, и все, что искал, нашел :)
теперь другие, технические проблемы -- нужно скачать Flash MX.

вегуд
27.12.2005, 01:17
я уж поискал, и все, что искал, нашел :)
теперь другие, технические проблемы -- нужно скачать Flash MX.

вот так всегда.. всё сп*здят :rolleyes:
качай сразу Flash8

Posho
27.12.2005, 16:59
еще б заставить это работать...

Nefelim
27.12.2005, 18:01
СЗОТ, конечно, но зачем это все? Реальный пацаны пользуют WordPad. :) Конкретные - Notepad. Я реальный. Глупо, неудобно, устарело, знаю, но ведь некоторые до сих пор не юзают мышку в шутерах. Аксакалы!

Теперь по теме. вегуд, я немного туплю. Как конкретно вставить данные из .txt-файла в тело странички при помощи приведенного тобой js'а? Скажем, я хочу отобразить текстовую строку-ссылку. Тогда это будет так:

<a href="mailto:admin@microsoft.com">???</a>

Вот вместо "???" я, допустим, хочу поставить значение №2 строки myparam25 из mydata.txt. Вот... :o

m.i.Mo™
28.12.2005, 03:34
Мне нужен скрипт для гостевой книги. Мож я не втему или сам не знаю что пишу, о всё же.

Woo Hoo!
28.12.2005, 14:36
Мне нужен скрипт для гостевой книги. Мож я не втему или сам не знаю что пишу, о всё же.
http://cgi.myweb.ru/index.phtml ищи что хочешь.

Nefelim
29.12.2005, 18:17
Попробую пока использовать JS для доски. У меня есть... хм... несколько :D вопросов. Пока что общеобразовательных, а там - посмотрим. Может, сам дойду. Итак, есть JS-файл с таким содержимым:

// definitions
var user_name = new Array ('Luke', 'Leia', 'Anakin', 'Vader');
var user_status = new Array ('hits', 'loves', 'beats', 'kills');
var misc = new Array ('target', 'mushrooms', 'maniacs', 'Obi-Van');


И есть HTML-файл:

<script type="text/javascript" src="sample.js"></script>

<BODY>

<hr>
<center>
<script>document.write(user_name[0]);</script>
<script>document.write(user_status[0]);</script> the
<script>document.write(misc[0]);</script>!
</center>
<hr>
<center>
<script>document.write(user_name[1]);</script>
<script>document.write(user_status[1]);</script> the
<script>document.write(misc[1]);</script>!
</center>
<hr>
<center>
<script>document.write(user_name[2]);</script>
<script>document.write(user_status[2]);</script> the
<script>document.write(misc[2]);</script>!
</center>
<hr>
<center>
<script>document.write(user_name[3]);</script>
<script>document.write(user_status[3]);</script> the
<script>document.write(misc[3]);</script>!
</center>
<hr>

</BODY>


Какую функцию мне надо написать (или воспользоваться стандартной), чтобы вместо цифр в указаниях параметров стояли случайные величины? Иными словами, как запустить генератор случайных чисел? У меня есть, скажем, матрица с неким набором параметров, причем их количество определено некой константой. Например:


var Array_UserName_RecordsNum = 3; // from 0 to 3
var Array_UserName = new Array ('thegood', 'Akar', 'Nefelim', 'admin');


Тогда эта функция должна считать значение параметра Array_UserName_RecordsNum и выдать любое число от 0 до значения параметра.

Зачем мне это все? Я хочу написать такой код, в котором количество строк было бы разумным и определенным. Скажем, в приведенном HTML-примере, для каждого из массивов мне пришлось писать отдельный блок, схожий с остальными - это неэффективно. Блок должен быть один, а количество его повторов с РАЗНЫМИ вводными определяется или автоматически, или задается. Это уже будет второй вопрос - такая функция тоже понадобится. Используя ее, я смогу построить идентичный ряд строк, скажем - таблицу юзеров. Считываем количество юзеров и это количество раз обрабатываем один и тот же блок кода.

вегуд
29.12.2005, 22:25
Какую функцию мне надо написать (или воспользоваться стандартной), чтобы вместо цифр в указаниях параметров стояли случайные величины? Иными словами, как запустить генератор случайных чисел? У меня есть, скажем, матрица с неким набором параметров, причем их количество определено некой константой. Например:


var Array_UserName_RecordsNum = 3; // from 0 to 3
var Array_UserName = new Array ('thegood', 'Akar', 'Nefelim', 'admin');


Тогда эта функция должна считать значение параметра Array_UserName_RecordsNum и выдать любое число от 0 до значения параметра.


в твоем случае Array_UserName_RecordsNum должна равнятся 4,
потому что у тебя 4 элемента ;)
но эта переменная не нужна вовсе, потому что число элементов
можно получить через Array_UserName.length()

твоя функция выглядит примерно так

function getRandomElement(InArray) {
return InArray[ Math.round(Math.random()*(InArray.length() - 1)) ];
}

она возвращает случайный элемент массива
остается только
document.write(getRandomElement(Array_UserName));

Nefelim
30.12.2005, 18:21
:( Что-то не работает у меня скрипт. Видать, где-то я что-то не так прописал.
Кстати, я скачал приличный гайд по Яве, так что вопросов, думаю, у меня станет существенно меньше.

вегуд
31.12.2005, 01:25
js рекомендую дебажить в firefox
там в инструментах есть джава-консоль, где можно посмотреть подробности ошибки

Nefelim
20.01.2006, 08:46
Есть скрипт (в аттаче). В "ослике" все работает, а вот FireFox его крутить не хочет - пишет: Предупреждение: Element referenced by ID/NAME in the global scope. Use W3C standard document.getElementById() instead.
Источник: file:///d:/_httpsrv/home/moddebauch.org/script/flakes.js
Строка: 75".
Вот она строка 75 (и 76):

si[i].style.pixelLeft=Xpos[i];
si[i].style.pixelTop=Ypos[i]+hscrll;

Как переписать ее, чтобы скрипт работал под FireFox? Скрипт образует на страничке "снегопад" - заданные изображения летят сверху вниз как снежинки.

Bobr
23.01.2006, 20:25
Нужен скрипт калькулятора услуг.
Если кто видел что-то похожее, киньте ссылку на архивчик... :o

<form>
<h3>Календарь карманный</h3>
<table width="100%">
<tr valign="top">
<td width="10"><input type="checkbox" name="" value="check me"></td>
<td width="20%">С ламинированием</td>
<td width="35%">Количество штук: <input name="" type="text" value="1"></td>
<td width="35%">Цена <input name="" type="text" value="3"></td>
</tr>
<tr valign="top">
<td><input type="checkbox" name="" value="check me"></td>
<td>Без ламинирования</td>
<td>Количество штук: <input name="" type="text" value="100"></td>
<td>Цена <input name="" type="text" value="250"></td>
</tr>
</table>
<h3>Календарь настенный</h3>
<table width="100%">
<tr valign="top">
<td width="10"><input type="checkbox" name="" value="check me"></td>
<td width="20%">Формат А3</td>
<td width="35%">Количество штук: <input name="" type="text" value="30"></td>
<td width="35%">Цена <input name="" type="text" value="1500"></td>
</tr>
<tr valign="top">
<td><input type="checkbox" name="" value="check me"></td>
<td>Формат А3 +</td>
<td>Количество штук: <input name="" type="text" value="50"></td>
<td>Цена <input name="" type="text" value="3000"></td>
</tr>
<tr valign="top">
<td><input type="checkbox" name="" value="check me"></td>
<td>Формат А2</td>
<td>Количество штук: <input name="" type="text" value="250"></td>
<td>Цена <input name="" type="text" value="7500"></td>
</tr>
</table>
<table>
<tr width="100%">
<td width="10"></td>
<td><b>Общая стоимость:</b> <input name="" type="text" value="1500"> рублей.</td>
</tr>
</table>
</form>

Nefelim
23.01.2006, 21:01
Посмотри, например, здесь (http://huba.ru/rdssoft/type6/su95/page0/). Не совсем то, но может и сойти. Еще пошукай на softlinks.ru или похожих архивах, где есть скрипты.

Bobr
23.01.2006, 22:04
Nefelim, что-то там не то всё...

вегуд
23.01.2006, 22:15
Есть скрипт (в аттаче).
Как переписать ее, чтобы скрипт работал под FireFox? Скрипт образует на страничке "снегопад" - заданные изображения летят сверху вниз как снежинки.


Скрипт кривой и старый. Требуется полная переделка. :)
для начала следовало бы убрать поддержку старого NN - то есть
if (ns) { - вырезать - } else { - оставить - }

в целях экономии времени можно так:

вместо

document.write('<img id="si" src="'+rndPic+'" style="position:absolute;top:0px;left:0px">');


надо

document.write('<img id="si' + i + '" src="'+rndPic+'" style="position:absolute;top:0px;left:0px">');



и вместо

si[i].style.pixelLeft=Xpos[i];
si[i].style.pixelTop=Ypos[i]+hscrll;

надо

document.getElementById('si'+i).style.left=Xpos[i];
document.getElementById('si'+i).style.top=Ypos[i]+hscrll;


результат не проверял :)