Я довольно новичок в JS. Я создал html-страницу и хочу включить слайдер изображения. он должен быть автоматическим. Я сделал некоторое кодирование, и когда я проверяю консоль, ее запуск, но изображение меняется. , и когда я получаю этот элемент с помощью «getElementById()», он говорит: «sld» имеет значение null, (строка7), то есть «sld.src = eval (« img »+ step +». Src »)» является нулевым, они говорят , Где я делаю это неправильно.Простой слайд изображений JavaScript без предварительного массива
JS - HTML
<script type="text/javascript">
var img1 = new Image();
img1.src="slide_show/1.jpg";
var img2 = new Image();
img1.src="slide_show/2.jpg";
var img3 = new Image();
img1.src="slide_show/3.jpg";
var img4 = new Image();
img1.src="slide_show/4.jpg";
</script>
JS
var step = 2;
function slideit()
{
console.log("i'm called");
console.log(step);
var sld = document.getElementsByName("sli");
sld.src = eval("img" + step + ".src");
if (step < 3) {
console.log("for loop");
step++;
}
else{
step = 1;
}
console.log("timeout");
setTimeout("slideit()", 250);
}
HTML
<div id="main_section">
<img name="sli" src="slideShow/1.1.jpg" id="slide_show"/>
</div>
хорошо, я хочу знать, почему Eval() функция не работало? использование массива хорошо, но вы можете исправить его так, как я намеревался, одну переменную для каждого изображения и использовать функцию eval(). и я использовал «getElementById (« slide_show »)», но возникает ошибка, говоря, что «sld» имеет значение null –
Hi River, вы сказали, что не хотите использовать функцию предварительной загрузки. Используя объект Image, вы делаете обратное. Eval должен работать в вашем случае, но присваивание переменной sld приведет к массиву, а не к скалярной переменной. Если вы получаете его как нуль, то вам нужно проверить, когда ваш сценарий будет запущен? Это до инициализации дерева DOM или после него. Лучше вызвать функцию слайда после готовности дерева DOM. Подсказка: используйте document.onreadystatechange https://developer.mozilla.org/en-US/docs/Web/API/document.readyState – CuriousMind
TypeError: sld is null –