Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / function init () можно инициализировать другим действием? / 12 сообщений из 12, страница 1 из 1
20.02.2010, 16:09:22
    #36481402
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
Привет..
Не селен в подобных вещах по этому прошу совета.
Использую Prototype
и вот такой скрипт
[сode]
<script type="text/javascript">
function init () {
var tabs = document.getElementsByClassName('tabs');
for (var i = 0; i < tabs.length; i++) {
$(tabs[i].id).onclick = function () {
getTabData(this.id);
}
}
}

function getTabData(id) {
var url = 'process.php';
var rand = Math.random(9999);
var pars = 'id=' + id;
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onLoading: showLoad, onComplete: showResponse} );
}

function showLoad () {
$('load').style.display = 'block';
}

function showResponse (originalRequest) {
var newData = originalRequest.responseText;
$('load').style.display = 'none';
$('content').innerHTML = newData;
}
</script>


[/сode]
Суть думаю понятна.. При инициализации события onClick на клас CSS tabs скрипт формирует GET запрос с неким ID с класса tabs и отправляет его на process.php потом же через function showResponse возвращает некий код..

Имхо суть.. Можно ли каким то доступными средствами, инициализировать данное событие, без onClick ? Т.е без действия пользователя.

Например средствами PHP или Java?
Или это из мира фантастики??
...
Рейтинг: 0 / 0
20.02.2010, 16:26:54
    #36481413
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
Electric200,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
	<script type="text/javascript">
		function init() {
			var tabs = document.getElementsByClassName('tabs');
			for (var i =  0 ; i < tabs.length; i++) {
				$(tabs[i].id).onclick = function () {
					getTabData(this.id);
				};
				$(tabs[i].id).onclick();
			}
		}

		function getTabData(id) {
			var url = 'process.php';
			var rand = Math.random( 9999 );
			var pars = 'id=' + id;
			var myAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onLoading: showLoad, onComplete: showResponse});
		}

		function showLoad() {
			$('load').style.display = 'block';
		}

		function showResponse(originalRequest) {
			var newData = originalRequest.responseText;
			$('load').style.display = 'none';
			$('content').innerHTML = newData;
		}
	</script>
...
Рейтинг: 0 / 0
20.02.2010, 16:44:54
    #36481425
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
Спасибо an0nym..
Мне теперь осталось еще научится передать значения ID с PHP в Java и цены мне не будет..
Так как в данном случае, срабатывает первое которое определено в коде...

Но все равно, вы мне открыли истину.
Еще скажите чайнику.. А вот в этом куске
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
function init() {
			var tabs = document.getElementsByClassName('tabs');
			for (var i =  0 ; i < tabs.length; i++) {
				$(tabs[i].id).onclick = function () {
					getTabData(this.id);
				};
				$(tabs[i].id).onclick();
			}

 
$(tabs[i].id).onclick() инициализировалось после того как был определен элемент tabs в DOM ?
...
Рейтинг: 0 / 0
20.02.2010, 16:47:33
    #36481430
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
Electric200,

откуда ж я знаю, в какой момент вы init() вызываете. Если body onload="init()", то после.
...
Рейтинг: 0 / 0
20.02.2010, 16:52:57
    #36481433
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
Ок спасибо я понял...Значит я на верном пути...А у вас нету ссылочки хорошей на доку что бы можно было бы почитать о DOM ? А то то что я нахожу, какая то пурга.. Заранее благодарен..
...
Рейтинг: 0 / 0
20.02.2010, 16:58:13
    #36481437
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
Electric200,

http://www.w3.org/standards/techs/dom#w3c_all
http://www.w3.org/standards/techs/domevents#w3c_all
...
Рейтинг: 0 / 0
20.02.2010, 20:24:53
    #36481572
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
В общем я начитался кучу инфы и возник вопрос.
Подгруженное содержимое через innerHTML, будет ли являться DOM элементами? Можно ли с ними работать повторно? Потому как я понял что нет, да и у меня не получается... Элементы не регистрируются в DOM модели страницы...
Это так:?
...
Рейтинг: 0 / 0
20.02.2010, 22:58:29
    #36481672
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
Electric200,

будет, должно во всяком случае.

Если у вас что-то не работает, выкладывайте минимально необходимый для полного воспроизведения код в тэге [src], будет время - вам помогут.
...
Рейтинг: 0 / 0
21.02.2010, 13:25:13
    #36481973
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
Ок..Спасибо an0nym
Опять же, вот функция, которая по событию onclick на div элемент (tabs) (узел) отправляет через prototype по GET свойство элемента (ID)
В ответ, возвращенный результат innerHTML и передает его элементу (div) content
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
<script type="text/javascript">
function init () {
              var tabs = document.getElementsByClassName('tabs');
              for (var i =  0 ; i < tabs.length; i++) {
                            $(tabs[i].id).onclick = function () {
                                          getTabData(this.id);
                            }

                                          
              }
}

function getTabData(id) {
              var url = 'process.php';
              var rand   = Math.random( 9999 );
              var pars   = 'id=' + id;
              var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onLoading: showLoad, onComplete: showResponse} );
}

function showLoad () {
              $('load').style.display = 'block';
}

function showResponse (originalRequest) {
              var newData = originalRequest.responseText;
              $('load').style.display = 'none';
              $('content').innerHTML = newData;
              return $('content');
}
</script>
Мне необходимо, что возвращенный результат был не #text а элементом DOM.Что бы можно было работать с ними. Но он таковым не стает..
Я вот думаю, если в возращенном результате через javascript создавать новый элемент по типу
Код: plaintext
var newDiv = document.createElement('div')
То увижу ли я его через DOM ?
...
Рейтинг: 0 / 0
21.02.2010, 13:34:29
    #36481980
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
Electric200,

а, вот оно что. createElement всего лишь создает элемент в "песочнице" (не знаю, как это точно по стандартам называется), после этого данный элемент надо еще засунуть в какой-то контейнер, например,
Код: plaintext
1.
2.
var el = document.createElement('div');
el.innerHTML = response;
document.getElementById('content').appendChild(el);

В Прототипе вроде есть обертки для append, prepend, insert etc.
...
Рейтинг: 0 / 0
21.02.2010, 13:36:54
    #36481987
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
+ ничего не мешает сделать так
Код: plaintext
1.
2.
3.
4.
5.
function showResponse (originalRequest) {
              var newData = originalRequest.responseText;
              $('load').style.display = 'none';
              $('content').innerHTML = "<div id='test1'>" + newData + "</div>";
              return $('content');
}

и дальше можно document.getElementById('test1') - т. е. в DOMе всё появится. Но правильнее, конечно, через DOM всё это делать, а не через код в innerHTML.
...
Рейтинг: 0 / 0
21.02.2010, 13:48:41
    #36482001
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
function init () можно инициализировать другим действием?
Да вроде нет...В контейнер кокраз его засовывать и не надо... Он нормальное создается и так..Но если он изначально находится в коде, а не подгружен через .innerHTML
К тому же этот вариант мне тоже не подходи
Код: plaintext
1.
 $('content').innerHTML = "<div id='test1'>" + newData + "</div>";
, так как подгруженное не должно является один единым элементом., а DOM моделью.

Попытаюсь сейчас написать какую то функцию, которая дополнительно бы создавала DOM элемент, а с .innerHTML подтягивала бы значения... хз мож и выйдет так))
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / function init () можно инициализировать другим действием? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]