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 :: добавить к css3 переключателю обработку js'ом.

 PHP.SU

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


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

> Без описания
Алтенрион
Отправлено: 04 Января, 2013 - 01:44:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


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




Вопрос прост: есть переключалка on/off. Сделана полностью на css3. С ее помощью хочу переключать значение переменной js, которая находится в подключенном документе js.

как это реализовать?

в js слабо разбираюсь.

Вот код переключалки:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. /* <!-- выключатель -->*/
  4. .onoffswitch {
  5.     position: relative; width: 54px;
  6.         margin-top: -40px;
  7.         float: right;
  8.         margin-right:20px;
  9.     -webkit-user-select:none; -moz-user-select:none; -ms-user-select: none;
  10. }
  11. .onoffswitch-checkbox {
  12.     display: none;
  13. }
  14. .onoffswitch-label {
  15.     display: block; overflow: hidden; cursor: pointer;
  16.     border: 2px solid #999999; border-radius: 18px;
  17. }
  18. .onoffswitch-inner {
  19.     width: 200%; margin-left: -100%;
  20.     -moz-transition: margin 0.3s ease-in 0s; -webkit-transition: margin 0.3s ease-in 0s;
  21.     -o-transition: margin 0.3s ease-in 0s; transition: margin 0.3s ease-in 0s;
  22. }
  23. .onoffswitch-inner:before, .onoffswitch-inner:after {
  24.     float: left; width: 50%; height: 14px; padding: 0; line-height: 14px;
  25.     font-size: 9px; color: white; font-family: Trebuchet, Arial, sans-serif; font-weight: bold;
  26.     -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;
  27. }
  28. .onoffswitch-inner:before {
  29.     content: "ON";
  30.     padding-left: 6px;
  31.     background-color: #BEEBFA; color: #FFFFFF;
  32. }
  33. .onoffswitch-inner:after {
  34.     content: "OFF";
  35.     padding-right: 6px;
  36.     background-color: #DEDBDB; color: #999999;
  37.     text-align: right;
  38. }
  39. .onoffswitch-switch {
  40.     width: 22px; margin: -4px;
  41.     background: #F7F7F7;
  42.     border: 2px solid #999999; border-radius: 18px;
  43.     position: absolute; top: 0; bottom: 0; right: 36px;
  44.     -moz-transition: all 0.3s ease-in 0s; -webkit-transition: all 0.3s ease-in 0s;
  45.     -o-transition: all 0.3s ease-in 0s; transition: all 0.3s ease-in 0s;
  46. }
  47. .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
  48.     margin-left: 0;
  49. }
  50. .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
  51.     right: 0px;
  52. }
  53.  
  54. /* <!-- выключатель -->*/
  55.  
  56.  



CODE (html):
скопировать код в буфер обмена
  1.  
  2.  
  3. <!-- выключатель -->
  4. <div class="onoffswitch">
  5.     <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" checked>
  6.     <label class="onoffswitch-label" for="myonoffswitch">
  7.         <div class="onoffswitch-inner"></div>
  8.         <div class="onoffswitch-switch"></div>
  9.     </label>
  10. </div>
  11. <!-- выключатель -->
  12.  
  13.  



Переменная которую нужно менять в подключаемом файле sss.js - "var status = false;"

Это значение по умолчанию. Требуется переключение true / false вывести на экран.
 
 Top
Саныч
Отправлено: 04 Января, 2013 - 01:54:54
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Вешайте обработчик onclick на checkbox и отслеживайте его изменение.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Алтенрион
Отправлено: 04 Января, 2013 - 02:12:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


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




уже 4 часа изучаю с нуля onclick и пришел к выводу что лучше спросить помощи у тех кто разбирается.
 
 Top
Алтенрион
Отправлено: 04 Января, 2013 - 11:00:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


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




Помогите пожалуйста, сделать чтобы при 1 клике функция вернула true, при следующем клике вернула false. Могу код js выложить .. помогите плиз.
 
 Top
armancho7777777 Супермодератор
Отправлено: 04 Января, 2013 - 15:44:06
Post Id



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


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


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




CODE (javascript):
скопировать код в буфер обмена
  1. window.onload = function()
  2. {
  3.         var checkbox = document.getElementById('myonoffswitch'),
  4.             checked  = checkbox.checked;
  5.                
  6.         alert(checked);
  7.        
  8.         checkbox.onclick = function()
  9.         {
  10.                 checked = this.checked;
  11.                
  12.                 alert(checked);
  13.         }
  14. }

CODE (html):
скопировать код в буфер обмена
  1. <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" checked="checked">

(Отредактировано автором: 04 Января, 2013 - 15:54:07)

 
 Top
Алтенрион
Отправлено: 05 Января, 2013 - 00:43:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


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




а как это привязать к переменной var status?

Есть функция, :

var fall = new function()
{
...

var status = false;
...
}

как к ней это прописать? подскажите пожалуйста.

(Отредактировано автором: 05 Января, 2013 - 00:45:34)

 
 Top
armancho7777777 Супермодератор
Отправлено: 05 Января, 2013 - 02:04:46
Post Id



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


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


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




Алтенрион пишет:
а как это привязать к переменной var status?

Как Вы собираетесь программировать ?
Может потрудитесь разобраться с примером, что Вам написали ?
Запустите код у себя и поймёте.

CODE (javascript):
скопировать код в буфер обмена
  1. window.onload = function()
  2. {
  3.         var checkbox = document.getElementById('myonoffswitch'),
  4.             status  = checkbox.checked;
  5.  
  6.         checkbox.onclick = function()
  7.         {
  8.                 status  = this.checked;
  9.         }
  10. }

(Отредактировано автором: 05 Января, 2013 - 02:07:21)

 
 Top
Алтенрион
Отправлено: 05 Января, 2013 - 17:33:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


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




Я код запускал, и разбирал. Увидел при переключении выскакивающие окна, посмотрел еще раз код и понял что эт alert делает. Повторюсь - я js знаю лишь поверхностно, и делаю упор в другие вещи, больше учу и осваиваю php.
(Добавление)
Так по идее работать не должно.

Первичный скрипт в котором включена переменная "status", включен тогда когда переменная равна false и выключен когда равна true ,

При клике должна изменяться эта переменная между true/false.

скрипт js чтобы понятнее было:


CODE (js):
скопировать код в буфер обмена
  1.  
  2.  
  3.  
  4. var snowfall = new function()
  5. {
  6.    // Объявление конфигурационного объекта
  7.    var settings = {};
  8.  
  9.    // Настройки
  10.    settings['use_images'] = true;              // Использовать ли изображения
  11.    settings['flake_symbol'] = "*";             // Символ "снежинки"
  12.    settings['flakes_dir_name'] = "snow";       // Имя папки с изображениями
  13.    settings['flake_imgs_ext'] = "gif";        // Расширения
  14.    settings['flake_types_num'] = 3;            // Количество "видов" снежинок
  15.    settings['flake_objects_num'] = 15;         // Количество "объектов" снежинок
  16.    settings['flake_symbol_color'] = 'blue';    // Цвет текстовых снежинок
  17.    settings['doctype'] = 'html';               // Ваш доктайп (если он не указан не изменяйте эту опцию).
  18.                                                // Возможные значения: xhtml || html
  19.    settings['update_positions_interval'] = 20; //Интервал обновления позиций снежинок (в миллисекундах)
  20.                                                //по умолчанию -- 40
  21.    // Константы
  22.    var snow_consts = {};
  23.    snow_consts["borderForce"] = 0.01; //Сила отталкивания от краёв; изменять именно эту константу
  24.    snow_consts["g"] = 54;
  25.    snow_consts["m"] = 0.1;
  26.    snow_consts["k"] = 0.1;
  27.    snow_consts["F"] = 20;
  28.    snow_consts["dt"] = 1;
  29.    snow_consts["mouseX"] = -1000;
  30.    snow_consts["mouseY"] = -1000;
  31.  
  32.    // Интервал для вызова метода flakes_positions
  33.    var positions;
  34.  
  35.    //Статус снегопада (идет; не идет)
  36.  
  37.  
  38.  
  39.  
  40.  
  41.    var status = false;
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.    /**
  50.     * Кэшируем изображения если они включены.
  51.     */
  52.    if (settings['use_images'])
  53.    {
  54.       var imgs = new Array();
  55.       for (var numimg = 1; numimg <= settings['flake_types_num']; numimg++)
  56.       {
  57.          imgs[numimg] = new Image();
  58.          imgs[numimg].src = settings['flakes_dir_name'] + '/' + numimg + '.' + settings['flake_imgs_ext'];
  59.       }
  60.    }
  61.  
  62.    /**
  63.     * Метод изменит настройки скрипта,
  64.     * если переданные ему настройки валидные.
  65.     */
  66.    var set_settings = function(new_settings)
  67.    {
  68.       if (new_settings)
  69.       {
  70.          if (typeof new_settings['use_images'] != 'boolean' || typeof new_settings['flake_symbol'] != 'string'
  71.              || typeof new_settings['flakes_dir_name'] != 'string' || typeof new_settings['flake_imgs_ext'] != 'string'
  72.              || typeof new_settings['flake_types_num'] != 'number' || typeof new_settings['flake_objects_num'] != 'number'
  73.              || typeof new_settings['flake_symbol_color'] != 'string' || typeof new_settings['doctype'] != 'string'
  74.              || typeof new_settings['update_positions_interval'] != 'number')
  75.          {
  76.             return false;
  77.          } else {
  78.             settings = new_settings;
  79.          }
  80.       }
  81.  
  82.       return true;
  83.    }
  84.  
  85.    /**
  86.     * Метод изменит значение переменных
  87.     * snow_consts["mouseX"] и snow_consts["mouseY"] записав в них
  88.     * координаты мыщи.
  89.     */
  90.    var mouse_Coords = function(event)
  91.    {
  92.       var event = event || window.event;
  93.       snow_consts["mouseX"] = event.clientX;
  94.       snow_consts["mouseY"] = event.clientY;
  95.    }
  96.  
  97.    document.getElementsByTagName("body")[0].onmousemove = mouse_Coords;
  98.  
  99.    /**
  100.     * Метод создает settings['flake_objects_num'] снежинок
  101.     * задавая им все необходимые свойства.
  102.     */
  103.    var create_flakes = function()
  104.    {
  105.       var clientWidth = document.getElementsByTagName("body")[0].clientWidth;
  106.       var clientHeight = document.getElementsByTagName("body")[0].clientHeight;
  107.       var body_element = document.getElementsByTagName("body")[0];
  108.       for (var id=1; id<=settings['flake_objects_num']; id++) /* На каждой итерации цикла создается снежинка */
  109.       {
  110.          var flake_tag = 0;
  111.          if (settings['use_images']) // Выбор тега снежинки в зависимсти от опции settings['use_images']
  112.          {
  113.             flake_tag = 'img';
  114.          } else {
  115.             flake_tag = 'div';
  116.          }
  117.          flake_obj = document.createElement(flake_tag); /* Задаются все необходимые свойства. */
  118.          if (settings['use_images']) /* Создание объекта снежинки в зависимости от опции settings['use_images'] */
  119.          {
  120.             var random_num = Math.floor(Math.random() * settings['flake_types_num']) + 1;
  121.             flake_obj.src = imgs[random_num].src;
  122.             flake_obj.alt = "flake" + id;
  123.          } else {
  124.             flake_obj.appendChild(document.createTextNode(settings['flake_symbol']));
  125.          }
  126.          flake_obj.id = 'flake'+id;
  127.          flake_obj.style.color = settings['flake_symbol_color'];
  128.          var flake_obj = body_element.appendChild(flake_obj); /* Вставляем нашу снежинки в тег body */
  129.          flake_obj.halfWidth = flake_obj.clientWidth/2;  /* Радиус снежинки */
  130.          flake_obj.halfHeight = flake_obj.clientHeight/2;/* Высота снежинки */
  131.          flake_obj.style.position = "absolute";
  132.          flake_obj.left = Math.random() * (clientWidth - flake_obj.halfWidth); /* Два специальных свойства с целью работы скорости снежинок, так как style.left и top может хранить только целые значения. */
  133.          flake_obj.top = Math.random() * (clientHeight - flake_obj.halfHeight - snow_consts["g"]);
  134.          flake_obj.amplitude = 1 + Math.random(); /* Отклонение от оси */
  135.          flake_obj.speed = 1 + Math.random() * 0.2; /* Скорость падения */
  136.          flake_obj.tempo = 2*Math.PI/(80 + 80 * Math.random()); /* Скорость покачивания */
  137.          flake_obj.speedX = 0; /* В этих свойствах ранится разгон */
  138.          flake_obj.speedY = 0;
  139.       }
  140.    }
  141.  
  142.    var delete_flakes = function()
  143.    {
  144.       var body_element = document.getElementsByTagName("body")[0];
  145.       for (var id=1; id<=settings['flake_objects_num']; id++)
  146.       {
  147.          var flake_obj = document.getElementById('flake' + id);
  148.          body_element.removeChild(flake_obj);
  149.       }
  150.    }
  151.  
  152.    var flakes_positions = function()
  153.    {
  154.       var clientWidth = document.getElementsByTagName("body")[0].clientWidth; /* Переменные для удобства */
  155.       var clientHeight = document.getElementsByTagName("body")[0].clientHeight;
  156.       var scrollLeft = document.getElementsByTagName("body")[0].scrollLeft;
  157.       if (settings['doctype'] === 'html')
  158.       {
  159.          var scrollTop = document.getElementsByTagName("body")[0].scrollTop;
  160.       } else {
  161.          var scrollTop = document.documentElement.scrollTop;
  162.       }
  163.       for (var i=1; i<=settings['flake_objects_num']; i++)                        /* Изменение положения снежинки на итерации цикла */
  164.       {
  165.          var flake_obj = document.getElementById('flake'+i); /* Получаем объект снежинки */
  166.          flake_obj.left += (flake_obj.speedX + flake_obj.amplitude*Math.cos(flake_obj.top*flake_obj.tempo))*snow_consts["dt"];
  167.          /* Выше! Это свойство создано с целью работы разных скоростей снежинок так как style.left может хранить только
  168.          цельные значения. */
  169.          flake_obj.top += (flake_obj.speedY + flake_obj.speed)*snow_consts["dt"];
  170.          /* Выше! Это свойство создано с целью работы разных скоростей снежинок так как style.left может хранить только
  171.          цельные значения. */
  172.          if (flake_obj.top < - snow_consts["g"]) /* Проверка не вышла ли снежинка за край экрана */
  173.          {
  174.             flake_obj.top = -snow_consts["g"];
  175.             flake_obj.speedX = flake_obj.speedY = 0; /* Обнуляем разгон! */
  176.          } else {
  177.             if (flake_obj.top > (clientHeight - snow_consts["g"])) /* Снежинка вышла за край изменяем положение. */
  178.             {
  179.                flake_obj.style.top = scrollTop;
  180.                flake_obj.top = - snow_consts["g"];
  181.                flake_obj.speedX = flake_obj.speedY = 0; /* Обнуляем разгон! */
  182.                flake_obj.style.left = Math.floor(flake_obj.left = Math.random() * (clientWidth - flake_obj.halfWidth)) + scrollLeft;
  183.             }
  184.          }
  185.          var deltaX = flake_obj.left + flake_obj.halfWidth - snow_consts["mouseX"];            /* Начинаем вычислять left и top координаты в зависимости от положения мыщи */
  186.          var deltaY = flake_obj.top + flake_obj.halfHeight/2 - snow_consts["mouseY"];
  187.          var Fx_old = snow_consts["F"] * deltaX/(deltaX*deltaX + deltaY*deltaY) - snow_consts["k"]*flake_obj.speedX;
  188.          var Fx = Fx_old + snow_consts["borderForce"] * (Math.max(snow_consts["g"] - flake_obj.left, 0) - Math.max(flake_obj.left - clientWidth + 2*snow_consts["g"], 0));
  189.          var Fy = snow_consts["F"] * deltaY/(deltaX*deltaX + deltaY*deltaY) - snow_consts["k"]*flake_obj.speedY;
  190.          flake_obj.speedX += Fx/snow_consts["m"]*snow_consts["dt"];
  191.          flake_obj.speedY += Fy/snow_consts["m"]*snow_consts["dt"];
  192.          flake_obj.style.left = scrollLeft + Math.round(flake_obj.left) + 'px'; /* Устанавливаем координаты! */
  193.          flake_obj.style.top = scrollTop + Math.round(flake_obj.top) + 'px';
  194.       }
  195.    }
  196.  
  197.    this.start = function(new_settings)
  198.    {
  199.       if (status)
  200.       {
  201.          this.stop();
  202.       }
  203.  
  204.       //Вызовем метод сет сеттингс, если настройки переданы в качестве аргумента методу start
  205.       //и они валидные -- то он изменит настройки скрипта.
  206.       if (!set_settings(new_settings))
  207.       {
  208.          throw new Error('Настройки, переданные методу snowfall::start() не валидные!');
  209.       }
  210.  
  211.       create_flakes(); /* Создаем снежинки */
  212.       positions = setInterval(flakes_positions, settings['update_positions_interval']); /* Запускаем метод flakes_positions каждые 40 миллисекунд */
  213.  
  214.       status = true;
  215.    }
  216.  
  217.    this.stop = function()
  218.    {
  219.       if (!status) return;
  220.  
  221.       clearInterval(positions);
  222.       delete_flakes();
  223.  
  224.       status = false;
  225.    }
  226. }
  227.  
  228.  
  229. snowfall.start();
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  

(Отредактировано автором: 05 Января, 2013 - 18:55:07)

 
 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