java script: вопросы и ответы

Velasqes

Старожил
Зачем лишние навороты, если можно изначально сделать так, чтобы было удобно и не надо было перетаскивать часики?
 

Druid

Старожил
Как сделать, чтобы картинка была фоновым изображением на странице?
 

MURaDER

Старожил
Существует ли такой скриптик? если да, то откуда можно скачать?

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

PS кто помнит у софта такое было на сайте стритрейса, много маленьких фоток на странице (штук 20-30) и при наведении ссылка на большую фотку.
 

gram

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

Nonick

Старожил
В интернете можно легко найти простенький скрипт галереи на php+gd_lib.
 

_Tolkienist_

Участник
Есть поп-ап менюшка на js. Состоит из 2х строк таблицы:
Код:
function onMenu(obj) {
	document.all.NavMenu0.className = "menuItemHighlight";
	obj.className = "subMenuHighlight";
}
function offMenu(obj) {
	document.all.NavMenu0.className = "menuItem";
	obj.className = "hidden";
}
function tOut() {
setTimeout("offMenu(obj)",1000);
}
<...>
Код:
<a href=#><tr class="menu"><td id="NavMenu0" class="menuItem" onMouseOver="javascript:onMenu(Nav0)" onMouseOut="javascript:offMenu(Nav0)">Menu Item 1</td></tr></a>
<tr class="subMenu" id="Nav0" class="hidden" style="" onMouseOver="javascript:onMenu(Nav0)" onMouseOut="javascript:offMenu(Nav0)"><td>
<a href="#">Sub Item 1</a><br>
<a href="#">Sub Item 2</a><br>
<a href="#">Sub Item 3</a><br>
</td></tr>

В ие все работает отлично. Но в мозилле при переводе мыши с Menu Item 1 ниже, на сабменю, "onMenu(Nav0)" вызывается только при наводе на саму надпись SubMenuX. В результате приходиться переводить мышь на поп-ап менюшку быстро, чтобы не успела исчезнуть, а при переводе мыши по самой сабменю, оно (меню) мигает.

Вопрос такой: как сделать, чтобы работало так же гладко, как в ие? Пробовал сделать таймером на 0.5 сек, но я в них не рублю совершенно :) Если кому не лень - можно пример, как это реализовать таймером? Хотя если получиться без него, то еще лучше :)
 

Druid

Старожил
Блин, решил создать простенький пример бегущей строки:
Код:
<html>
<head><title>Бегущая строка</title>
<script language="JavaScript">
var msg = "Вот пример бегущей строки...";
var spacer = "...                                         ...";
var pos = 0;
function ScrollMessage () {window.status =
msg.substring (pos. msg.lenght) + spacer +
msg.substring (0. pos) ;
pos++
if (pos > msg.lenght) pos = 0;
window.setTimeout ("ScrollMessage ()" ,200);
}
ScrollMessage ();
</script>
</head>
<body>
<h1>Бегущая строка</h1>
Взгляните на строку состояния в нижней части вашего браузера.
</body></html>

Только при запуске странице появляется фигня какая-то.В чём проблема?
 

x_0040h

Старожил
Столкнулся с задачей динамического добавления контролов на страницу:
Код:
function GenerateNewSwitchRowContent()
        {
            var container = document.createElement("div");
      
            
            var ddWays = document.createElement("select");
            var ddAsingments = document.createElement("select");
            container.appendChild(ddWays);
            container.appendChild(ddAsingments);
            
            //---------Ways---------------------------------
            var strAsigmentControlName = "m_ddAsingmentListSwitches"+g_nSwitchesControlCounter;
             
                ddWays.setAttribute("id","m_ddWayListSwitches"+g_nSwitchesControlCounter);
            ddWays.setAttribute("name","m_ddWayListSwitches"+g_nSwitchesControlCounter);;
            //-------Asingments----------------------------
            ddAsingments.setAttribute("id","m_ddAsingmentListSwitches"+g_nSwitchesControlCounter);
            ddAsingments.setAttribute("name","m_ddAsingmentListSwitches"+g_nSwitchesControlCounter);
            
            return container.innerHTML;
        }
Потом в эти контролы добавляется контент, но дело в том, что по сути они связаны, т.е. ddWays при изменении значения должен запрашивать с сервера некоторую информацию. Для статических контролов вызов функции для смены контента связанного контрола второго выглядит как:

Код:
onchange="js:WayNumberChanged('m_ddAsingmentList',this.value)"
функции WayNumberChanged первый параметр (id) нужен как воздух, потому что она возвращает данные с сервера и должна знать кому она взвращает.
Пытался
Код:
ddWays.setAttribute("onchange","WayNumberChanged('"m_ddAsingmentListSwitches"+g_nSwitchesControlCounter',this.value)")
тупо не реагирует на событие.

пытался добавить на сервере
Код:
//C#
DropDownList dd = new DropDownList();
        dd.ID = strTargetID1;
        dd.Attributes.Add("onclick", "WayNumberChanged('"+strTargetID2+"',this.value);");
// strTargetID1 == "m_ddWayListSwitches0
// strTargetID2 == "m_ddAsingmentListSwitches"
ругается по поводу "Excepted ;", хотя на мой взгляд гененрит абсолютно правильный контент
Код:
<select name="m_ddWayListSwitches0" id="m_ddWayListSwitches0" onclick="WayNumberChanged('m_ddAsingmentListSwitches0',this.value);"><option selected="selected" value="14">38</option><option value="15">44</option><option value="17">122</option></select>
 

gram

Старожил
события добавляются не через атрибут, а так:
Код:
    if (element.addEventListener) {
      element.addEventListener(name, observer, false);
    } else if (element.attachEvent) {
      element.attachEvent('on' + name, observer);
    }

name - имя события
observer - твоя функция

и вообще, вместо того, чтобы создавать элементы, я бы на твоем месте просто сделал так:
mydiv.innerHTML = '<div>...</div>'
потому что я не очень представляю себе, почему ты делаешь все через объекты, а затем возвращаешь просто строку innerHTML, можно сразу её сделать
 

Druid

Старожил
Задача: Сделать так, что бы при входе на сайт появлялся запрос на введение имён. Вот код:
Код:
<html>
<head>
<title>JS</title>
</head>
<body>
<h1>JS</h1>
<p>sls</p>
<SCRIPT LANGUAGE="JavaScript 1.2">
names = new ArraY();
I = 0;
do {
     next = promt("...");
     if (next> " ") names[i] = next;
     i = i + 1;
     }
while (next > " ");
document.write("<H2>" + (names.lenght) + " sls </H2>");
document.write("<OL>");
for (i in names)   {
     document.write("<LI>" + names[i] + "<BR>");
     }
document.write("</OL>");
</script>
</body>
</html>

Но он почему то нифига этого не делает...почему?
 

vrman

Старожил
<html> <head> <title>JS</title> </head> <body> <h1>JS</h1> <p>sls</p> <SCRIPT LANGUAGE="JavaScript 1.2"> names = new ArraY(); <------------------ так массивы не объявляются. как минимум new Array() I = 0; <----------- далее такая переменная где ??? насколько я помню, перед объявлением переменной желательно указание var do { next = promt("..."); <----------------------что за функция ??? где объявлена ??? if (next> " ") names = next; i = i + 1; <------------------- здесь уже другая "i" } while (next > " "); <-------------- с учетом предыдущих объявлений, данный цикл превращается в бесконечный. document.write("<H2>" + (names.lenght) + " sls </H2>"); ______________________^^^^^^^^^ буковки неверно написал. правильно length document.write("<OL>"); for (i in names) { document.write("<LI>" + names + "<BR>"); } document.write("</OL>"); </script> </body> </html>
Синтаксис желательно соблюдать..
 

Druid

Старожил
Тоесть while (next > " "); надо вообще удалить, а вот причём тут другая i?
 

vrman

Старожил
Druid":xtmbsps5 сказал(а):
Тоесть while (next > " "); надо вообще удалить,
удалять может и не надо, а вот определить условие, при котором цикл все-таки закончится, необходимо.
Druid":xtmbsps5 сказал(а):
а вот причём тут другая i?
а при том, что выше ты определил переменную "I", а она абсолютно не равна "i". И поэтому твоя индексная перменная "i" на момент начала цикла do...while может поиметь любое значение.

Почитай литературу по JavaScript. Там очень подробно про все написано.
 

n0ip

Старожил
вот такой вопрос возник: нужно сделать чтобы по щелчку див плавно расширялся по высоте до заданного размера. проблема: не знаю как прятать текст и элемент формы. и чтобы они опять же плавно появлялись. второй вечер голову ломаю =(
 

A4

Старожил
подскажите, пожалуйста, код, который бы менял action формы в зав-ти от того, какой выбран option в селекте.

Код:
<form action="" method=post>

<select><option value="1">var 1<option value="2">var 2</select>
<!-- more form elements -->
<input type="submit" value="ok">

</form>

ну т.е. чтобы это ходило по сабмиту на две страницы, скажем first.php если выбран в селекте var 1 и second.php - если var 2
 

A4

Старожил
всем спасибо, сделал так:
Код:
<SCRIPT language="JavaScript">
function OnSubmitForm()
{
  if(document.myform.select_field.selectedIndex == '0')
  {
   document.myform.action ="first.php";
  }
  else
  {
    document.myform.action ="second.php";
  }
  return true;
}
</SCRIPT>

<FORM name="myform" onSubmit="return OnSubmitForm();">
<select id="select_field"><option>1<option>2</select>
<input type="submit">
</FORM>
 

Незнайка

Старожил
Есть рисунок и есть слой привязанный к этому рисунку с небольшим смещением. Но координаты слоя отсчитываются от окна.

Как сделать чтобы координаты слоя отсчитывались от рисунка, чтобы при изменении размеров окна или разрешения, смещение слоя оставалось неизменным.
 
Верх