|
|
|
| Добрый вечер! Подскажите советом или примером...
Есть html файл с набором картинок:
......
<img class="simg" src="images/ld.jpg" alt="Первый" />
......
|
Отдельный *.js файл с следующей функцией, стартующей при событии onLoad:
function addOnSub() {
var cDiv = document.getElementById("cDiv");
var cimages = cDiv.getElementsByTagName("img");
for (var a=0; a<cimages.length;a++)
{ cimages[a].id=a;
cimages[a].onclick = addToFav; //вызов функции
}
}
|
Нужно чтобы при событии onclick также передавался текущий id .
Что-то вроде такого cimages[a].onclick = addToFav (this.id); этот вариант не работает, а как правильно?
И попутно, как прописать тут же в for_е такую строку, только в нормальном рабочем виде
cimages[a].onfocus.style.cursor = "pointer"; | |
|
|
|
|
|
|
|
для: Nigma07
(28.02.2009 в 00:31)
| |
function addOnSub ()
{
var cDiv_0 = document.getElementById ("cDiv"); //переменная с именем cDiv уже есть. Зачем путать и себя, и браузер?
var cimages = cDiv_0.getElementsByTagName ("img");
for (var a = 0; a < cimages.length; a++)
{
cimages [a].id = 's' + a; //значения id должны начинаться с буквы
cimages [a].onclick = addToFav; //вызов функции ?? Это не вызов функции, это - НАЗНАЧЕНИЕ функции
cimages [a].onfocus = myFunc;//назначаем ещё одну функцию, коя будет изменять стиль курсора. Текст её ниже.
}
}
function myFunc (ev)
{
var evt = ev || event, obj = evt.target || evt.srcElement;
obj.style.curcor = 'pointer';
}
|
Определять id картинки, по которой кликнули, можно в самой функции addToFav, ничего ей не передавая. Функцию оформить надо аналогично вышенаписанной mуFunc, т.е. так:
function addToFav (ev)
{
var evt = ev || event, obj = evr.target || evt.srcElement;
var myID = obj.id;//в переменной myID будет содержаться значение id картинки, по которой кликнули.
...
ну а тут пишете всё то, что должна делать эта функция.
И можете использовать myID,
или только цифры из значения id - отсеките первый символ: var NumID = myID.substr (1);
...
}
|
| |
|
|
|
|
|
|
|
для: PAT
(28.02.2009 в 03:48)
| | Спасибо огромное за подробное объяснение! Если б знал, что так распишите, не палил бы свое время сна зря.
P.S.Появился вопрос по поводу ...
var cDiv_0 = document.getElementById ("cDiv"); //переменная с именем cDiv уже есть. Зачем путать и себя, и браузер?
|
Может что-то не понимаю, почему переменная "cDiv уже есть"? Это вроде всего лишь id поля... У меня так много написано приложений, но правда на php, вроде работают без багов. | |
|
|
|
|
|
|
|
для: Nigma07
(28.02.2009 в 19:38)
| | Запустите в любом браузере
<body onload="alert (cDiv.innerHTML)">
<div id="cDiv">XYZ</div>
</body>
|
И теперь продолжите утверждать, что cDiv - "это вроде всего лишь id поля"? :-) | |
|
|
|
|
|
|
|
для: PAT
(28.02.2009 в 03:48)
| | Нужна еще помощь по поводу функции.
После перезагрузки системы строка var evt = ev || event, obj = evr.target || evt.srcElement; отказывается работать в M Firefox 3.0.6.
Поискал в инете, у всех такая проблема. Может че подскажите или мож есть какая альтернатива?
На форуме нашел такого вида :
var evt = (window.event) ? window.event : document.createEvent ('MouseEvents'), obj = evt.target || evt.srcElement;
|
Не работает :( Или я не правильно обращаюсь!? Мне нужно value достать. | |
|
|
|
|
|
|
|
для: Nigma07
(03.03.2009 в 03:04)
| | Какое именно value?
В вашем изначальном вопросе никаких value не было в принципе.
Что именно не работает?
В каком из браузеров?
<html>
<head>
<script>
function addOnSub ()
{
var cDiv_0 = document.getElementById ("cDiv");
var cimages = cDiv_0.getElementsByTagName ("img");
for (var a = 0; a < cimages.length; a++)
{
cimages [a].id = 's' + a;
cimages [a].onclick = addToFav;
cimages [a].onfocus = myFunc;
}
}
function addToFav () {
var evt = (window.event) ? window.event : document.createEvent ('MouseEvents'), obj = evt.target || evt.srcElement;
alert ('Делаем, что надо, зная id="' + obj.id + '" картинки, по которой кликнули");
}
function myFunc () {
var evt = (window.event) ? window.event : document.createEvent ('MouseEvents'), obj = evt.target || evt.srcElement;
obj.style.curcor = 'pointer';
}
</script>
</head>
<body onload="addOnSub ()">
<div id="cDiv">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
</div></body>
</html>
|
| |
|
|
|
|
|
|
|
для: PAT
(03.03.2009 в 03:20)
| | Узнав о такой возможности, решил применить к select, оттуда и value. Id я тоже не могу достать.
При alert (obj.id) - перезагружается; При alert (obj) - 'undefined'; При alert (evt); - object MouseEvent
В других браузерах, все нормально(Opera Версия9.50, IE 7.0.57.30.13), а вот в Mozille никак.
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 | |
|
|
|
|
|
|
|
для: Nigma07
(03.03.2009 в 03:38)
| | >При alert (obj.id) - перезагружается
Где в моём коде вы увидели строку alert (obj.id) ?
Покажите!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!
Вас попросили посмотреть в ваших браузерах именно ТОТ КОД, КОТОРЫЙ ВЫЛОЖЕН, а не ваши персональные заморочки, никому не известные.
И попросили дать список тех браузеров, в которых НЕ РАБОТАЕТ (других, где всё нормально - не просили).
Вы в состоянии сделать ТОЛЬКО ТО, о чём просят?
Ведь просят не потому что "так хочется", а потому что помочь хотят.
И помочь хотят именно вам.
А вы, как нарочно, делаете всё НАОБОРОТ, будто не хотите получить помощь | |
|
|
|
|
|
|
|
для: PAT
(03.03.2009 в 03:50)
| | Да нет, не нарочно. Думал, что alert ('Делаем, что надо, зная id="' + obj.id + '" картинки, по которой кликнули"); и просто alert (obj.id ) одно и тоже.
Выложу все, что есть, если сильно замусорю, удалите пожалуйста пост.
Index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title>Сдвинем недвижимое</title>
<link rel="stylesheet" type="text/css" href="./style/index.css">
<script src="./site_add/myajax.js" type="text/javascript"> </script>
<script src="./site_add/json.js" type="text/javascript"> </script>
<script src="./site_add/menu_search.js" type="text/javascript"> </script>
</head>
<div>
<div ><a href="http://localhost" title="Сдвинем недвижимое"> <img src="./image/domik.jpg" alt="Сдвинем недвижимое"></a>
</div>
</div>
<div id="poisk" class="brd">
<?php
include('./site_add/search.php');
?>
</div>
<div id="searching" class="loadv" style="display:none;"> search </div>
</html>
|
search.php
Выберите область:
<select onchange="search_menu(); return false;" name="oblsity">
<?php
header("Content-type: text/html; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
include ('./site_add/sc_.inc.php');
$sql_="SELECT * FROM `Oblast`";
$result=mysql_query($sql_,$connect);
while ($row = mysql_fetch_assoc($result))
{
$i=$row['name_oblast'];
print "<option value='o$row[Id_oblast]'> $i";
}
?>
</select>
|
scsc.php - выборка данных, выводит такую строку {"myobl":[{"id":"1","name":"Донецк"},{"id":"3","name":"Горловка"},{"id":"4","name":"Макеевка"},{"id":"5","name":"Харцызск"}]}
menu_search.js
function search_menu(ev)
{
var ad_adress;
var Poisk_T;
var evt = ev || event, obj = evt.target || evt.srcElement;
var menu_city_value = obj.name;
var menu_city_id = obj.value;
alert (obj.name);
alert (obj.value);
alert (obj.id);
var Poisk_a = document.getElementById("poisk");
if (menu_city_value == "oblsity")
{
ad_adress="a";
if (Poisk_a.childNodes[5] || Poisk_a.childNodes[3]){delvespoisk(Poisk_a,1);}
} else if (menu_city_value == "mycity")
{
ad_adress="b";
if (Poisk_a.childNodes[5]){delvespoisk(Poisk_a,2);}
}
var loading = document.getElementById("searching");
loading.style.display = "block";
var xmlHttp = createRequest();
var nocache = Math.random();
xmlHttp.open('GET', 'site_add/scsc.php?search' + ad_adress + '='+ menu_city_id + '&nocache=' + nocache, true);
xmlHttp.onreadystatechange = function()
{
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
{
loading.style.display = "none";
var json = JSON.parse (xmlHttp.responseText);
var Poisk_s = document.createElement("select");
Poisk_s.onchange = search_menu;
if (ad_adress=="a")
{
Poisk_s.name = "mycity";
Poisk_T = document.createTextNode("Выберите город:");
}
else if (ad_adress=="b")
{
Poisk_s.name = "myrigion";
Poisk_T = document.createTextNode("Выберите район:");
}
for (var i = 0; i <json.myobl.length; i++)
{ var Poisk_s1 = document.createElement("option");
var Poisk_t = document.createTextNode(json.myobl[i].name);
Poisk_s1.appendChild(Poisk_t);
Poisk_s1.value = "c"+ json.myobl[i].id;
Poisk_s.appendChild(Poisk_s1);
}
Poisk_a.appendChild(Poisk_T);
Poisk_a.appendChild(Poisk_s);
}
}
xmlHttp.send(null);
}
function delvespoisk (Poisk_a1,intP)
{
if (intP == "1")
{
if (Poisk_a1.childNodes[5]) for (var i=6; i>2; i--) Poisk_a1.removeChild(Poisk_a1.childNodes[i]);
else for (var a=4; a>2; a--)Poisk_a1.removeChild(Poisk_a1.childNodes[a]);
}
if (intP == "2")
{
for (var s=6; s>4; s--) {Poisk_a1.removeChild(Poisk_a1.childNodes[s]);}
}
}
|
| |
|
|
|
|
|
|
|
для: Nigma07
(03.03.2009 в 04:03)
| | Вам 03.03.2009 в 03:20 выложили код.
И попросили ответить на два вопроса - "Что именно не работает?" и "В каком из браузеров?"
Вы не поняли. Вы написали 03.03.2009 в 03:38 какую-то, извините, фигню про селекты и перечислили какие-то браузеры.
Вас ЕЩЁ РАЗ попросили запустить в ваших браузерах именно тот код, который выложен 03.03.2009 в 03:20 и ЕЩЁ РАЗ попросили ответить на два вопроса: "Что именно не работает?" и "В каком из браузеров?"
В ответ вы выкладываете какую-то "простыню".
Я, честно говоря, просто в шоке.
ТРЕТИЙ РАЗ спрашиваю - "Что именно не работает в том коде, который выложен мною 03.03.2009 в 03:20 и в каком из браузеров не работает?"
[поправлено модератором] | |
|
|
|
|
|
|
|
для: PAT
(03.03.2009 в 04:18)
| | Никакой реакции в браузере в Mozilla Firefox 3.0.6 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913
При нажатии на картинку она выделяется, только и всего.
Добавил в функцию
function addOnSub ()
{
var cDiv_0 = document.getElementById ("cDiv");
var cimages = cDiv_0.getElementsByTagName ("img");
alert (cimages.length);// эту строку, чтобы хоть как-то увидеть начало действий, но ничего не происходит.
for (var a = 0; a < cimages.length; a++)
{
cimages [a].id = 's' + a;
cimages [a].onclick = addToFav;
cimages [a].onfocus = myFunc;
}
} | |
|
|
|
|
|
|
|
для: Nigma07
(03.03.2009 в 04:34)
| |
<html>
<head>
<script>
function addOnSub ()
{
var cDiv_0 = document.getElementById ("cDiv");
var cimages = cDiv_0.getElementsByTagName ("img");
for (var a = 0; a < cimages.length; a++)
{
cimages [a].id = 's' + a;
cimages [a].onclick = addToFav;
cimages [a].onfocus = myFunc;
}
}
function addToFav (evt) {
evt = window.event || evt, obj = evt.target || evt.srcElement;
alert ('ID=' + obj.id);
}
function myFunc (evt) {
evt = window.event || evt, obj = evt.target || evt.srcElement;
obj.style.curcor = 'pointer';
}
</script>
</head>
<body onload="addOnSub ()">
<div id="cDiv">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
<img width="50" height="50" style="background: red">
</div></body>
</html>
|
Проверяйте. | |
|
|
|
|
|
|
|
для: PAT
(03.03.2009 в 05:18)
| | Супер! Работает и на своей простыне опробовал! Спасибо, Вам, за решение вопроса! Извините за мое непонимание! Как бы мне к Вам в ученики попасть!? | |
|
|
|