Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: подскажите как организовать выборку из массива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
p1us
Отправлено: 01 Ноября, 2012 - 11:49:23
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. var arr = new Array();
  2. for(j=1; j<6;j++) {
  3. arr[j-1] = "scr" + j;
  4. };
  5.  
  6. $.each(arr, function(i){
  7.                 $("#" + this).click(function(){
  8.                 if (i == 0) {
  9.                 $(this).css({ 'border-right': '1px solid #fff',
  10.                 'background':'#fff url(../images/' + i + '.png) no-repeat 50% 30%'});
  11.                 }else if(i == 1){
  12.                 $(this).css({ 'border-right': '1px solid #fff',
  13.                 'background':'#fff url(../images/' + i + '.png) no-repeat 50% 30%'});
  14.                 }else if(i == 2){
  15.                 $(this).css({ 'border-right': '1px solid #fff',
  16.                 'background':'#fff url(../images/' + i + '.png) no-repeat 50% 50%'});
  17.                 }else if(i == 3){
  18.                 $(this).css({ 'border-right': '1px solid #fff',
  19.                 'background':'#fff url(../images/' + i + '.png) no-repeat 60% 40%'});
  20.                 }else if(i == 4){
  21.                 $(this).css({ 'border-right': '1px solid #fff',
  22.                 'background':'#fff url(../images/' + i + '.png) no-repeat 55% 30%'});
  23.                 };
  24.  
  25.                 });
  26.        
  27. });


хочется сделать так, чтобы при нажатии на какой-либо div с идентификатором "scr" + i, все остальные идентификаторы из массива arr принимали исходное правило css, ну фон белый, рамку такую же

только что подумал что через splice(i, 1) можно сделать, попробую
(Добавление)
сделал иначе, но тем не менее очень интересен вариант через массивы, умельцы выложите пожалуйста ваш вариант. Заранее спасибо!

(Отредактировано автором: 01 Ноября, 2012 - 12:15:46)

 
 Top
IllusionMH
Отправлено: 01 Ноября, 2012 - 13:01:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




p1us, ну это просто ппц.
Самый простой вариант - при загрузке страницы создать элемент style в который в нести дефолтное значение для всех элементов, и потом в цикле стили для всех элементов, но у которых есть класс, примерно так

CODE (JS):
скопировать код в буфер обмена
  1. style += "#scr" + (i + 1) + ".active { border-right: 1px solid #fff;
  2.                 background: #fff url(../images/"+ i + ".png) no-repeat " + arr[i];

где arr создается руками и содержит строку с координатами для соответствующих элементов

После чего действие происходит по принципу: убрать класс у всех элементов и добавить только нужному.
 
 Top
p1us
Отправлено: 01 Ноября, 2012 - 13:04:45
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




нет, с этим проблем нет, я вот именно хочу чтобы все делалось не руками а массивами, соответственно чтобы элемент, на который щелкает пользователь, удалялся из массива(или менял класс), но при щелчке на другой элемент, предыдущий восстанавливал свои позиции. а так то я уже сделал, но не через класс, так как у меня фон меняется в зависимости от i

CODE (javascript):
скопировать код в буфер обмена
  1. var arr = new Array();
  2. for(j=1; j<6;j++) {
  3. arr[j-1] = "scr" + j;
  4. };
  5.  
  6. $.each(arr, function(i){
  7.                 $("#" + this).click(function(){
  8.                 $('a[id ^= scr]').css({ 'border-right': '1px solid #ffcd58',
  9.                 'background-color':'#fef6df'});
  10.                 $(this).css({ 'border-right': '1px solid #fff',
  11.                 'background':'#fff url(../images/' + i + '.png) no-repeat 50% 30%'});
  12.                
  13.                 });

(Отредактировано автором: 01 Ноября, 2012 - 13:06:11)

 
 Top
IllusionMH
Отправлено: 01 Ноября, 2012 - 13:20:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




p1us, все через массивы? и какой же скрытый смысл вашего массива, в котором содержатся только id элементов(можно сразу селектор хранить если # добавить), хотя их проще в цикле перебрать.
В коде выше у всех элементов имеются разные положения фона. Вот что предлагаю я: создается руками(или циклом если можно вывести закономерность от i) массив, которых и содержит эти координаты.
Потом создается стиль содержащий дефолтный стиль для всех элементов и отдельно для каждого активного(с соответствующим классом) с позицией для этого элемента. Потом банальный код который убирает/добавляет классы?
Что тут нужно руками делать?

(Отредактировано автором: 01 Ноября, 2012 - 13:24:30)

 
 Top
p1us
Отправлено: 01 Ноября, 2012 - 13:25:14
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




прочитал дважды! смысл лишь в том чтобы добраться до смысла того как делается, а не для того чтобы взять и напортачить. хочется, чтобы то , что пришло в голову имело выход, а для этого опыт, который иногда приходит не из собственной головы, и не более, того)
 
 Top
IllusionMH
Отправлено: 01 Ноября, 2012 - 13:38:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




p1us, вам предложен вариант, который учитывает разные положения фона(как в первом посте), требует минимум ручной работы(задается только положение фона, т.к. иначе в цикле не задать), осмысленно использует массив и достаточно прост в реализации(создание строки для стилей активных элементов, добавление элемента, шаблонный код переключения класса(аналогичен коду в 3 посту))

p1us пишет:
нет, с этим проблем нет, я вот именно хочу чтобы все делалось не руками а массивами

Чем вариант в котором руками вводится только то, что нельзя сделать в цикле не подходит?
 
 Top
p1us
Отправлено: 02 Ноября, 2012 - 10:50:14
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




спасибо)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB