Новичек (генератор глупых вопросов)
Здравствуйте, уважаемые.
Увлекся изучением JavaScript и уперся в стандартные проблемы. Читая статьи просветление легкое ощущается, но когда дело доходит до разбора чужого кода - полный ступор. Вот надеюсь тут найдутся добрые люди, помогут зеленому разобраться в командах и сокращениях... первое недоумение вызвала эта строчка: var a=document.MM_sr; MM_sr похоже на имя переменной, но больше в коде она нигде не встречается, в справочниках по языку я тоже не нашел такой аббревиатуры. Дальше : x.src=x.oSrc; вопрос соответственно вызывает oSrc Дальше: if (a[i].indexOf("#")!=0) if((p=n.indexOf("?")) вот это не понятно "#" "?"... пока все... заранее благодарю понимающих и помогающих, остальные пожалуйста не утруждайтесь, сам знаю што выглядит это все глупо и урлы статей тематических я знаю... |
MM_sr и oSrc это некие свойства(переменные) объектов document и x соответственно. "#" "?"... это аргументы метода(функции) indexOf.
Метод indexOf Возвращает индекс позиции впервые встреченного искомого значения в вызванном объекте string. Цитата:
p=n.indexOf("?") т.е. p это позиция первого вхождения подстроки ? в строку n |
Неа, уважаемый Tim всеравно непонятно... вот полный код функции
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; } она перезагружает исходную картинку при событии onMouseOut (которая перед этим была изменена событием onMouseOver). Применяется функция примерно так <a href="basket.php"><img onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image_b','','img/basketbutton3.gif',0)" src="Img/basketbutton.gif" name="Image_b" width="120" height="50" border="0"></a> так на какой объект в этом случае указывает переменная "a" и что значит запись x.src=x.oSrc;??? А библию я давно скачал но читать такой скан с компа глазы не могут, а на бумаге в нашей деревне не продается... |
MM_sr должно встречаться где-то ещё т.к. это не есть стандартное св-во document. Убедитесь сами (сценарий выводит все св-ва и методы объекта document):
onload = function() { str = ''; for (a in document) str += a + '\n'; alert(str); } a - это локальная переменная функции MM_swapImgRestore указывающая на свойство MM_sr объекта document. Предположительно это массив. x.src=x.oSrc - свойству src присвайвается значение свойства oSrc. Оба свойства принадлежат к объекту x т.е. являются переменными этого объекта. Цитата:
|
Нуда так и есть, нашел я эти мутные свойства, в другой функции определялись, спасибо, Тим...
|
Но это еще не все))))))))
Нашел я в интернете универсальный скрипт для замены изображений в зависимости от событий onMouseOut и onMouseOver.... скрипт выглядит так: 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) { //v4.01 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); if(!x && d.getElementById) x=d.getElementById(n); 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];} } подключается так <img onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image_b','','img/basketbutton3.gif',0)" src="Img/basketbutton.gif" name="Image_b" width="120" height="50" border="0"> Посидев ночку, примерно разобрался как эта машинка работает, но при этом родил одну гениальную строчку для тойже задачи: <img onMouseOut="this.src='img/basketbutton3.gif'" onClick="this.src='img/basketbutton2.gif'" onMouseOver="this.src='img/basketbutton.gif'" src="Img/basketbutton3.gif" name="immg" width="120" height="50" border="0"> без дополнительных функций, просто одна работающая строчка. И возникли у меня сомнения - не зря же люди городили набор жутких функций... может мое решение не кроссбраузерное или я еще каких то тонкостей не знаю....????? |
Цитата:
Цитата:
|
Что за горе программист так обзывал переменные.. ужасно
|
MM_ -- Macromedia Dreamweaver.
|
аа.. ну блин :) я им и не пользовался
|
ну здорева, што все так здорева...
еще вопросик.. событие onclick меня тревожит... если кликать на стандартные кнопки инпутов, то они переходят в нажатое состояние непосредственно при нажатии мыша,тоесть ели мыша не отпускать, кнопка держится в нажатом положении, с онкликом както странно все, такое впечатление, что он срабатывает когда кнопку мыша отпускаешь, поскольку все очень быстро, я даже не уверен срабатывает ли он. просветите пожалуйста меня в этом вопросе. |
onmousedown - опускание кнопки мыши
onmouseup - поднятие кнопки мыши onclick - поднятие и опускание кнопки мыши Над конкретным элементом естественно :) |
ну понятно.. это беда моя.... не внимательно читаю первоисточники, я с ней борюсь... спасибо!!
|
Ну если я еще Вас не задолбал, то попрошу еще подсказки...
форма отправки электронного адреса для занесения его в базу mysql: <form action="<?php echo $PHP_SELF?>" onSubmit="return my_mail('??????')" method="post" id="mail"> <input name="text_mail" type="text" size="18" maxlength="30" onblur="this.value=(this.value==''?'Введите e-mail':this.value)" onfocus="this.value=(this.value=='Введите e-mail'?'':this.value)" value="Введите e-mail"/> <input name="send_mail" type="submit" /> </form> function my_mail() { var a=my_mail.arguments; var msg="Вы ввели следующий электронный адрес: " + a[0]; if (confirm(msg)){ return true; } else{ return false; } } Вот вопросики в аргументе функции my_mail, и вызывают сомнение, как передать туда значение поля, которое в момент отправки уже в глобальном массиве??? и можно ли менять текст на кнопках функции confirm??? |
<form action="http://javascript.ru/" onsubmit="return confirm('Вы ввели следующий электронный адрес: '+this.text_mail.value)" method="post" id="mail"> <input name="text_mail" type="text" size="18" maxlength="30" onblur="this.value=(this.value==''?'Введите e-mail':this.value)" onfocus="this.value=(this.value=='Введите e-mail'?'':this.value)" value="Введите e-mail"/> <input name="send_mail" type="submit" /> </form> |
Круто... Спасибо!!!
|
Братцы, опять я уперся.. поможите!!
на старничке у меня расположился mp3 плеер: <div id='pleer'> <object type='application/x-shockwave-flash' data='mp3/template_maxi/player_mp3_maxi.swf' width='200' height='20'> <param name='movie' value='mp3/template_maxi/player_mp3_maxi.swf' /> <param name='FlashVars' value='' /> </object> </div> По нажатию кнопок на сайте, в value последнего "парама" (FlashVars) должно поступать примерно такое значение "mp3=mp3/music/$al/$songz.mp3&autoplay=1" где переменные al и songz идентифицируют путь к нужному файлу, ну и autoplay параметр автозапуска композиции. Вот так выглядит моя кнопка: <div id='slushat-button'><button onclick=document.getElementsByTagName('param')[1].value='mp3=mp3/music/$al/$songz.mp3&autoplay=1'>Слушать</button><br></div> Все это располагается внутри PHP, ну и не трудно догадаться, что нифига не работает. Причем если ,как полагается, беру описание события онклик в одинарные кавычки, то браузер ругается на синтаксическую ошибку в следующей после кнопки строчке. где не прав я???? |
<button onclick="document.getElementsByTagName('param')[1].setAttribute('value','mp3=mp3/music/$al/$songz.mp3&autoplay=1');">Слушать</button> |
Skipp, спасибо за ответ, как изменять атрибуты я понял, но всерно не работает, думаю это связано с особенностями работы плеера. Полазил в его мануалах и нашел рекомендации по подключению через яваскрипты, вот что получилось:
<script type="text/javascript"> function mju_play_track(num) { <!--Останавливаю текущий трек (если он играет) --> document.getElementById("myFlash").SetVariable("player:jsStop", ""); <!--Меняю адрес музыкального файла на новый--> document.getElementById("myFlash").SetVariable("player:jsUrl", "mp3/music/The_Beautiful_Game/Kidstuff.mp3"); <!--Запускаю плеер --> document.getElementById("myFlash").SetVariable("player:jsPlay", ""); } </script> myFlash это id объекта с плеером. При запуске через такую кнопку все работает: <button onclick="return mju_play_track()">Слушать</button> НО как только я пытаюсь вынести адрес файла во внешнюю переменную, работать перестает... наверное я чтото с синтаксисом косячу??? <script type="text/javascript"> function mju_play_track(num) { document.getElementById("myFlash").SetVariable("player:jsStop", ""); document.getElementById("myFlash").SetVariable("player:jsUrl", "num"); document.getElementById("myFlash").SetVariable("player:jsPlay", ""); } </script> <button onclick="return mju_play_track('mp3/music/The_Beautiful_Game/Kidstuff.mp3')">Слушать</button> Научите, пожалуйста как правильно???? |
Все разобрался.. кавычки у переменной num в функции лишние!!
|
Часовой пояс GMT +3, время: 20:19. |