2014-01-26 5 views
0

Я хочу автоматически изменять размер частей моего сайта с помощью onchange-Event. Но, как всегда, у меня возникла небольшая проблема. Console дает эту ошибку:..AttachEvent of 0 is undefined

The property undefined or a null reference can not be retrieved»

function Resize() { 
    var winHeight = window.innerHeight; 
    var winWidth = window.innerWidth; 
    var startElements = document.getElementsByClassName('start'); 
    for (var i = 1; i <= startElements.length; i++) { 
     document.startElements[i].attachEvent('onchange', function StartResize() { 
     startElements[i].style.paddingLeft = winWidth * 0.1; 
     startElements[i].style.paddingRight = winWidth * 0.1; 
     }); 
    }; 
}; 

<body onload="Resize"> 

Последнее, что я уже написал сценарий-тег в моем HTML документа в конце тела тега

ответ

1

Удалить document из. document.startElements.

Вы, вероятно, ищет Resize(). Вы забыли () вызвать вашу функцию.

<body onload="Resize()"> 

Однако встроенный JS (например, onload в вашем html) никогда не был хорошей практикой. Проверьте некоторые из этих результатов: Why is inline JS bad?

Вместо этого, вы должны приложить слушателя событий с JavaScript, как это:

window.addEventListener('load', function() { 
    //code here 
}); 

Если вы не хотите, чтобы ваш код для работы только в IE5-8, что вам нужно использовать addEventListener не attachEvent, так что должно быть addEventListener('change',

Мне также интересно, если вы имели в виду, чтобы начать свой цикл на 1, а не 0. Первым элементом будет элемент 0. Если на странице есть только один элемент, вы пропускаете его и начинаете с элемента, который не существует.

Так, попробуйте также:

for (var i = 0; 
+0

Спасибо за посоветуйте! Я просто забыл вызвать его в своем вопросе в моем коде, который я сделал, жалко за ошибку. Но то, что я действительно ищу, является ошибкой с .getElementsByClassName (''). Я думаю, что это не работает с Eventlistener – Reijo

+0

@ user3237742 еще одно обновление, которое я добавил - вы, вероятно, хотели запустить свой цикл с 'i = 0' not' i = 1'. Я снова обновил свой ответ. – m59

+0

О, я сделал то, что ты сказал мне делать. Но это все еще не работает. – Reijo