Я создаю свой сайт-портфолио, просто используя HTML
, Flash
и Mootools Javascript
framework. Я решил реализовать функцию смены темы, используя Javascript и куки. Когда пользователь нажимает на ссылку «Изменить тему», появляется лайтбокс mediaboxAdvanced , содержащий форму в реальном времени, позволяющую изменить тему в портфолио.
Вот код для формы:
<div id="mb_inline" style="display: none; margin:15px;">
<h3>Change Your Theme</h3>
<form>
<fieldset>
<select id="background_color" name="background_color">
<option value="#dcf589">Original</option>
<option value="#000FFF">Blue</option>
<option value="#00FF00">Green</option>
</select>
</fieldset>
</form>
</div>
Я знаю, кнопка отправки не существует, но как только что-то меняется в этой форме, происходит следующий код Mootools
:
var themeChanger = new Class(
{
pageBody : null,
themeOptions : null,
initialize: function()
{
this.pageBody = $(document.body);
this.themeOptions = $('background_color');
this.themeOptions.addEvent('change', this.change_theme.bindWithEvent(this));
},
change_theme: function(event)
{
alert("Hello");
}
});
window.addEvent('domready', function() {
var themeChanger_class = new themeChanger();
});
Теперь это только тестовая функция, которая должна срабатывать при изменении раскрывающегося меню. Тем не менее, кажется, что ничего из этого не работает, когда форма находится в лайтбоксе! Теперь, если я решу запустить форму за пределами лайтбокса, тогда она отлично работает!
Кажется, он даже не может получить доступ к элементу "background_color".
Я что-то упустил?
Если вам нужно больше примеров, я буду заполнять по требованию.
Спасибо всем заранее.
-Christopher
Обновление (27.04.2010 - 12:54):
Я немного больше разбираюсь в этом и имею две теории обо всем этом.
1- В файле mediaboxAdv.js
есть следующее объявление:
$(document.body).adopt(
Может ли это помешать мне получить доступ к свойствам тела, таким как "background-color"?
2- Может ли лайтбокс отображать эту форму как отдельную страницу, поэтому я не могу получить доступ к тегу тела родительской страницы?
3- Нужно ли декларировать мой файл JavaScript следующим образом?
<div id="mb_inline" style="display: none; margin:15px;">
<!-- script declaration -->
<script type="text/Javascript" src="scripts/themeChanger.js"></script>
<!-- the form -->
<h3>Change Your Theme</h3>
<form>
<fieldset>
<select id="background_color" name="background_color">
<option value="#dcf589">Original</option>
<option value="#000FFF">Blue</option>
<option value="#00FF00">Green</option>
</select>
</fieldset>
</form>
</div>
Обновление (27.04.2010 - 13:17):
Вот скриншот того, что я пытаюсь сделать, если это может помочь вам, ребята.
Скорее всего, я могу опубликовать ссылку на сайт, чтобы вы могли своими глазами увидеть, что я хочу сделать.