Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   ПОМОГИТЕ РАЗОБРАТЬСЯ КАК РАБОТАЕТ ЭТОТ СКРИПТ! (https://javascript.ru/forum/dom-window/58895-pomogite-razobratsya-kak-rabotaet-ehtot-skript.html)

mikhail apalaev 15.10.2015 22:25

ПОМОГИТЕ РАЗОБРАТЬСЯ КАК РАБОТАЕТ ЭТОТ СКРИПТ!
 
скрипт предзагрузки изображений

не понятна эта строка:

document[changeImages.arguments[i]].src = changeImages.arguments[i+1];

заранее спасибо!

<html>
<head>
<title><? echo $title; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=cp-1251">
<script language="JavaScript">
<!--

function newImage(arg) {
if (document.images) {
rslt = new Image();
rslt.src = arg;
return rslt;
}
}

function changeImages() {
if (document.images && (preloadFlag == true)) {
for (var i=0; i<changeImages.arguments.length; i+=2) {
document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
}
}
}

var preloadFlag = false;
function preloadImages() {
if (document.images) {
_13 = newImage("images/13.gif");
_14 = newImage("images/14.gif");
_15 = newImage("images/15.gif");
_16 = newImage("images/16.gif");
preloadFlag = true;
}
}

// -->
</script>
</head>
<body bgcolor=#FFF3E6 onLoad="preloadImages();" topmargin=0 rightmargin=0 leftmargin=0 marginheight=0 marginwidth=0>
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr>
<td width=153 height=174>
<img src="images/01.gif" width=153 height=174></td>
<td width=153 height=174>
<img src="images/02.gif" width=153 height=174></td>
<td width=153 height=174>
<img src="images/03.gif" width=153 height=174></td>
<td width=153 height=174>
<img src="images/04.gif" width=153 height=174></td>
<td width=136 height=174>
<img src="images/05.gif" width=136 height=174></td>
<td width=100% height=212 rowspan=3 background="images/06.gif">&nbsp;
</td>
</tr>
<tr>
<td width=153 height=32>
<a href="index1.html"
onmouseover="changeImages('_07', 'images/13.gif'); return true;"
onmouseout="changeImages('_07', 'images/07.gif'); return true;">
<img name="_07" src="images/07.gif" width=153 height=32 border=0 title="кнопка 1"></a></td>
<td width=153 height=32>
<a href="index2.html"
onmouseover="changeImages('_08', 'images/14.gif'); return true;"
onmouseout="changeImages('_08', 'images/08.gif'); return true;">
<img name="_08" src="images/08.gif" width=153 height=32 border=0 title="кнопка 2"></a></td>
<td width=153 height=32>
<a href="index3.html"
onmouseover="changeImages('_09', 'images/15.gif'); return true;"
onmouseout="changeImages('_09', 'images/09.gif'); return true;">
<img name="_09" src="images/09.gif" width=153 height=32 border=0 title="кнопка 3"></a></td>
<td width=153 height=32>
<a href="index4.html"
onmouseover="changeImages('_10', 'images/16.gif'); return true;"
onmouseout="changeImages('_10', 'images/10.gif'); return true;">
<img name="_10" src="images/10.gif" width=153 height=32 border=0 title="кнопка 4"></a></td>
<td width=136 height=32>
<img src="images/11.gif" width=136 height=32></td>
</tr>
<tr>
<td width=748 height=6 colspan=5>
<img src="images/12.gif" width=748 height=6></td>
</tr>
</table>
<br>
<table border=0 cellpadding=5 cellspacing=0 width=100%>
<tr>
<td>
<font face=sans-serif,arial,helvetica size=2 color=#000000>
<h1><? echo $zagolovok;?></h1>
<? echo $body; ?>
</font>
</td>
</tr>
</table>
</body>
</html>

ksa 16.10.2015 09:04

Цитата:

Сообщение от mikhail apalaev
не понятна эта строка:
document[changeImages.arguments[i]].src = changeImages.arguments[i+1];

Ответ, как правило, в букваре...
http://javascript.ru/arguments

ksa 16.10.2015 09:06

Цитата:

Сообщение от mikhail apalaev
onmouseover="changeImages('_10', 'images/16.gif');

Внутри функции changeImages() твою непонятную строку интерпретируем в
document['_10'].src = 'images/16.gif';

ksa 16.10.2015 09:09

Цитата:

Сообщение от mikhail apalaev
for (var i=0; i<changeImages.arguments.length; i+=2) {/**/}

Для твоего примера явно избыточное применение... :)
Достаточно было и двух именных аргументов "Имя" и "Картинка".

mikhail apalaev 16.10.2015 18:52

большое спасибо ksa!:)

есть еще вопросы

function newImage(arg) {
if (document.images) {
rslt = new Image(); (создание объекта-изобр.)
rslt.src = arg; (адрес объекта = аргументу функции newImage)
return rslt; (возврат объекта, возврат куда???)


onmouseover=document['_10'].src = 'images/16.gif'; (при наведении мыши вместо существующего вставляется новое-images/16.gif???)

for (var i=0; i<changeImages.arguments.length; i+=2) (changeImages.arguments.length=2? цикл повторяется 1 раз? эта строка для чего??? )

mikhail apalaev 16.10.2015 19:17

function preloadImages() {
if (document.images) {
_13 = newImage("images/13.gif"); функция называет newImage с аргументом images/13.gif именем- _13??? зачем ее называть?
_14 = newImage("images/14.gif");
_15 = newImage("images/15.gif");
_16 = newImage("images/16.gif");
preloadFlag = true; функция preloadImages выполняет function newImage с разными аргументами??? после выполнения всех 4 function newImage дает preloadFlag значение true ???

ksa 19.10.2015 11:36

Цитата:

Сообщение от mikhail apalaev
возврат куда???

Туда, где вызывалась функция...

function test(){return 'Ok'};
// вот в alert и вернет
alert(test());

ksa 19.10.2015 11:38

Цитата:

Сообщение от mikhail apalaev
при наведении мыши вместо существующего вставляется новое-images/16.gif???

У элемента с именем _10 изменится свойство src...

ksa 19.10.2015 11:45

Цитата:

Сообщение от mikhail apalaev
(changeImages.arguments.length=2? цикл повторяется 1 раз? эта строка для чего??? )

Тут я не понял вопроса... :no:

ksa 19.10.2015 11:47

Цитата:

Сообщение от mikhail apalaev
ает preloadFlag значение true ?

Дабы где-то знать, что "прелоад" выполнен...

ksa 19.10.2015 11:47

Цитата:

Сообщение от mikhail apalaev
функция называет newImage с аргументом images/13.gif именем- _13??? зачем ее называть?

Тут больше вопросы к автору скрипта... :D

mikhail apalaev 22.10.2015 18:02

благодарю:)

for (var i=0; i<changeImages.arguments.length; i+=2) (changeImages.arguments.length=2? цикл повторяется 1 раз? эта строка для чего??? )

changeImages.arguments.length равен 2?(changeImages имеет 2 аргумента, length-выводит кол-во аргументов )

i<changeImages.arguments.length цикл повторяется от 0 до 2 (3 раза)?

i+=2 шаг цикла=2?

количество циклов с шагом равным 2 будет 1?

ksa 23.10.2015 14:04

Цитата:

Сообщение от mikhail apalaev
i+=2 шаг цикла=2?

Да. :yes:
Цитата:

Сообщение от mikhail apalaev
количество циклов с шагом равным 2 будет 1?

Смотря сколько параметров было передано в функцию... Если два - итерация будет одна.

mikhail apalaev 02.12.2015 22:28

Здравствуй ksa! Пожалуйста посоветуй, я хочу фрилансить версткой сайтов , изучил основы js, html, css, стоит ли мне изучить bootstrap? или есть более полезные в этом плане знания?

Sigizmund2012 03.12.2015 09:30

Цитата:

Сообщение от mikhail apalaev (Сообщение 398470)
Здравствуй ksa! Пожалуйста посоветуй, я хочу фрилансить версткой сайтов , изучил основы js, html, css, стоит ли мне изучить bootstrap? или есть более полезные в этом плане знания?

Конечно стоит. Bootstrap или Foundation обычно стандартное требование работодателей. Там на изучение максимум 2 дня уйдёт, а дальше практика, практика, практика...

mutio43 03.12.2015 13:23

Хочу сделать снег на сайте. Но чтобы падал на фоне сайта, нашел скрипт и там прописаны позиции, но мне нужно, чтобы снег падал по бокам сайта - ширина сайта 960px. Я начинающий, прошу помощи. Помогите пожалуйста

<SCRIPT type="text/javascript">
var snowmax=35
var snowcolor=new Array("#aaaacc","#ddddff","#ccccdd","#f3f3f3","#f0ffff")
var snowtype=new Array("Times","Arial","Times","Verdana")
var snowletter="*"
var sinkspeed=0.6
var snowmaxsize=40
var snowminsize=20
var snowingzone=1
var snow=new Array()
var marginbottom
var marginright
var timer
var i_snow=0
var x_mv=new Array();
var crds=new Array();
var lftrght=new Array();
var browserinfos=navigator.userAgent
var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/)
var ns6=document.getElementById&&!document.all
var opera=browserinfos.match(/Opera/)
var browserok=ie5||ns6||opera
function randommaker(range) {
 rand=Math.floor(range*Math.random())
 return rand
}
function initsnow() {
 if (ie5 || opera) {
 marginbottom = document.body.scrollHeight
 marginright = document.body.clientWidth-15
 }
 else if (ns6) {
 marginbottom = document.body.scrollHeight
 marginright = window.innerWidth-15
 }
 var snowsizerange=snowmaxsize-snowminsize
 for (i=0;i<=snowmax;i++) {
 crds[i] = 0;
 lftrght[i] = Math.random()*15;
 x_mv[i] = 0.03 + Math.random()/10;
 snow[i]=document.getElementById("s"+i)
 snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)]
 snow[i].size=randommaker(snowsizerange)+snowminsize
 snow[i].style.fontSize=snow[i].size+'px';
 snow[i].style.color=snowcolor[randommaker(snowcolor.length)]
 snow[i].style.zIndex=1000
 snow[i].sink=sinkspeed*snow[i].size/5
 if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
 if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
 if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
 if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
 snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size)
 snow[i].style.left=snow[i].posx+'px';
 snow[i].style.top=snow[i].posy+'px';
 }
 movesnow()
}
function movesnow() {
 for (i=0;i<=snowmax;i++) {
 crds[i] += x_mv[i];
 snow[i].posy+=snow[i].sink
 snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i])+'px';
 snow[i].style.top=snow[i].posy+'px';
 
 if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){
 if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
 if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
 if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
 if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
 if (snowingzone==5) {snow[i].posx=randommaker(marginbottom/2-snow[i].size)+marginright/2}
 snow[i].posy=0
 }
 }
 var timer=setTimeout("movesnow()",50)
}
for (i=0;i<=snowmax;i++) {
 document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter+"</span>")
}
if (browserok) {
 window.onload=initsnow
}
</SCRIPT>


Часовой пояс GMT +3, время: 15:50.