Цикл, не работает без алерта.
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, время: 04:22. |