Цикл, не работает без алерта.
var planet = document.getElementById('rechts').getElementsByClassName('smallplanet'); var planet_id = new Array(); var planet_pics = new Array(); var planet_name = new Array(); var planet_coords = document.getElementsByClassName('planet-koords')[0].innerHTML; var moon_id = new Array(); var moon_pics = new Array(); var moon_name = new Array(); var moon_coords = new Array(); var planet_count = 0; var moon_count = 0; var planet_number = 0; var moon_number = 0; for (var i = 0; i <= planet.length; i++) { planet_id[i] = planet[i].innerHTML.split('moonlink')[0].slice(planet[i].innerHTML.split('moonlink')[0].indexOf('&cp=')+8, planet[i].innerHTML.split('moonlink')[0].indexOf('" title')); planet_pics[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planetPic')[0].src; planet_name[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planet-name')[0].innerHTML; planet_coords[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planet-koords')[0].innerHTML; if (planet[i].innerHTML.indexOf('src="img/planets/moon/') > 0) { moon_id[i] = planet[i].innerHTML.split('moonlink')[1].slice(planet[i].innerHTML.split('moonlink')[1].indexOf('&cp=')+8, planet[i].innerHTML.split('moonlink')[1].indexOf('" title')); } } alert(moon_id[3]); Так как указано в примере не хочет работать, выдает: Код:
Error: planet[i] is undefined Подскажите пожалуйста, в чём я ошибся? |
потому что объекты еще не доступны.
запускайте скрипт после загрузки страницы, или хотя бы необходимых вам элементов |
В таком случае почему, если alert вставить в тело цикла, все объекты считаются загруженными, и нормально выдают нужный мне результат?
Скрипт работает из под GreaseMonkey... |
за то время пока вы смотрите на алерт, успевает загрузится HTML_код страницы
|
Добавил onLoad... Ситуации это не изменило...
С Alert - работает. onLoad = get_vars(); function get_vars () { for (var i = 0; i <= planet.length; i++) { planet_id[i] = planet[i].innerHTML.split('moonlink')[0].slice(planet[i].innerHTML.split('moonlink')[0].indexOf('&cp=')+8, planet[i].innerHTML.split('moonlink')[0].indexOf('" title')); planet_pics[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planetPic')[0].src; planet_name[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planet-name')[0].innerHTML; planet_coords[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planet-koords')[0].innerHTML; if (planet[i].innerHTML.indexOf('src="img/planets/moon/') > 0) { moon_id[i] = planet[i].innerHTML.split('moonlink')[1].slice(planet[i].innerHTML.split('moonlink')[1].indexOf('&cp=')+8, planet[i].innerHTML.split('moonlink')[1].indexOf('" title')); } alert(moon_id[3]); } } Без Alert - не работает. onLoad = get_vars(); function get_vars () { for (var i = 0; i <= planet.length; i++) { planet_id[i] = planet[i].innerHTML.split('moonlink')[0].slice(planet[i].innerHTML.split('moonlink')[0].indexOf('&cp=')+8, planet[i].innerHTML.split('moonlink')[0].indexOf('" title')); planet_pics[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planetPic')[0].src; planet_name[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planet-name')[0].innerHTML; planet_coords[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planet-koords')[0].innerHTML; if (planet[i].innerHTML.indexOf('src="img/planets/moon/') > 0) { moon_id[i] = planet[i].innerHTML.split('moonlink')[1].slice(planet[i].innerHTML.split('moonlink')[1].indexOf('&cp=')+8, planet[i].innerHTML.split('moonlink')[1].indexOf('" title')); } } } Не могли-бы вы посоветовать что-то более конкретное? т.к. насколько мне известно GreaseMonkey подгружает скрипт после загрузки страницы, хотя возможно я не прав. |
Во-первых, не onLoad, а window.onload. Во-вторых, вы опять же запускаете функцию до загрузки страницы.
window.onload = get_vars; |
window.onload = get_vars;
Error: Component is not available window.onload = get_vars(); Error: planet[i] is undefined |
Цитата:
window.onload = function(){ get_vars(); } |
Error: Component is not available
Line: 42 window.onload = function(){ window.onload = function(){ for (var i = 0; i <= planet.length; i++) { planet_id[i] = .... } } Тоже самое... Вот весь код: var url = location.href; var nickname = document.getElementById('playerName').getElementsByClassName( 'textBeefy')[0].innerHTML; var server = url.split('/')[2]; var uni_name = document.getElementsByTagName('title')[0].innerHTML; var address = url.split('/')[4]; var page = address.match(/page=([^&]+)/); var session = address.match(/session=(.+)$/); var planet = document.getElementById('rechts').getElementsByClassName('smallplanet'); var planet_id = new Array(); var planet_pics = new Array(); var planet_name = new Array(); var planet_coords = document.getElementsByClassName('planet-koords')[0].innerHTML; var moon_id = new Array(); var moon_pics = new Array(); var moon_name = new Array(); var moon_coords = new Array(); var planet_count = 0; var moon_count = 0; var planet_number = 0; var moon_number = 0; window.onload = function(){ get_vars(); } function get_vars () { for (var i = 0; i <= planet.length; i++) { planet_id[i] = planet[i].innerHTML.split('moonlink')[0].slice(planet[i].innerHTML.split('moonlink')[0].indexOf('&cp=')+8, planet[i].innerHTML.split('moonlink')[0].indexOf('" title')); planet_pics[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planetPic')[0].src; planet_name[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planet-name')[0].innerHTML; planet_coords[i] = planet[i].getElementsByClassName('planetlink')[0].getElementsByClassName('planet-koords')[0].innerHTML; if (planet[i].innerHTML.indexOf('src="img/planets/moon/') > 0) { moon_id[i] = planet[i].innerHTML.split('moonlink')[1].slice(planet[i].innerHTML.split('moonlink')[1].indexOf('&cp=')+8, planet[i].innerHTML.split('moonlink')[1].indexOf('" title')); } } } Всё что идёт до функции без проблем парситься и выводиться через те-же alert'ы... Но сама функция не хочет... GreaseMonkey, Firefox/3.6.6 |
Цитата:
|
Часовой пояс GMT +3, время: 06:32. |