Еще новичок в php и javascript, но этот форум помогает многим ... спасибо.Есть ли способ присвоить функции javascript в цикле?
У меня есть галерея соответствует стороне моей стороны фотографий (каждое фото + имя пользователя + личного заявления = единица и содержащейся в ячейке таблицы .... информация извлекается из базы данных SQL, как SQL1 $ и $ SQL2 ниже через цикл «while», я установил предел = 50 пар фотографий в галерее) .... галерея отлично отображена. Тем не менее, я думал, что сделаю его более интерактивным для пользователя, разместив зеленый контур вокруг устройства onmouseover изображения . Мой тест (используя зеленый контур) работает при ручной установке всех переменных в скрипте следующим образом (здесь с двумя функциями как для GreenBorder и NoBorder в сценарии):
<?php $i=1;
WHILE (($row = mysql_fetch_assoc(**$sql1**)) && ($drow =
mysql_fetch_assoc(**$sql2**))) {
echo "<script>
var Outline = new Array();
for (j=1; j<50; j++) {
Outline[j] = j;
}
function GreenBorder1() {
document.getElementById('X'+Outline[1]).style.outline = '#00CC00 solid
thick';
}
function NoBorder1() {
document.getElementById('X'+Outline[1]).style.outline = 'none';
}
function GreenBorder2() {
document.getElementById('X'+Outline[2]).style.outline = '#00CC00 solid
thick';
}
function NoBorder2() {
document.getElementById('X'+Outline[2]).style.outline = 'none';
}
</script>";
//Lots of code
echo "<td id=\"X".$i."\">";
//Lots of Code
echo "<img src=\"images/**image**.png\" onmouseover=\"GreenBorder".$i."(this)\"
onmouseout=\"NoBorder".$i."(this)\">";
echo "</td>";
//Lots of Code
$i++;
} // End while
?>
Очевидно, я предпочел бы не написать 50 функции типа GreenBorder (number)() и NoBorder (number)() (на самом деле 200 полных функций с 50 пар фотографий с GreenBorder или NoBorder). Я искал какой-то способ сделать что-то с моим скриптом следующим образом (по моему мнению, каждый пробег в цикле «for» назначил бы другой номер функции j для GreenBorder и NoBorder, который соответствовал бы определенному идентификатору также номер J, совпадающий номер функции J):
echo "<script> //I will name this *script2*
var Outline = new Array();
for (**j**=1; **j**<50; **j**++) {
Outline[**j**] = **j**;
function GreenBorder**j**() {
document.getElementById('X'+Outline[**j**]).style.outline = '#00CC00 solid
thick';
}
function NoBorder**j**() {
document.getElementById('X'+Outline[**j**]).style.outline = 'none';
}
}
</script>";
Я пытался в различных способов сделать это (в том числе писать свои имена функций, как GreenBorder.j(), GreenBorder + J(), и GreenBorder'j '() и другие, включая использование скобок) и исследовали; Я нашел эту ссылку на сайте:
но методы этого Линка все, кажется, связаны с фактической записью 200 функций (которые, в конце концов, я хотел бы сделать, если это необходимо, мой оригинальный сценарий должен также Работа). Любой способ сделать функцию такой компактной, как я предлагаю в script2 путем нумерации функций в цикле?
Не уверен, что я понимаю. Просто чтобы уточнить, когда вы «наводили на мышь» изображение, добавленное конкретным пользователем, вы хотите, чтобы все изображения, добавленные этим же пользователем, получили зеленый контур? – showdev
Просто в стороне, вы должны делать это через CSS, а не JS. Вы можете установить псевдо-кластер ': hover' в CSS, чтобы изображение получило границу при наведении. Это делается исходя из предположения, что все, что вы хотите сделать, это выделить границу. – JohnP
Спасибо за ответ showdev ..... на самом деле, onmouseover изображения в ячейке таблицы, я хочу, чтобы весь 'unit' = [(изображение + имя пользователя + персональный оператор) в ячейке таблицы] имел зеленый контур вокруг него, только для этой ячейки таблицы. Извините за неоднозначность –