Выдача рандомного изображения с помощью js
В папке "@3" лежат 2 (в перспективе больше 150) изображения формата JPEG, их имена состоят из чисел, т. е. первое изображение - 1.jpg, второе - 2.jpg и т. д.. Нужна страница, которая выдаст одно случайное из 2 (в перспективе из более 150) изображений. Мой код почему-то не работает. Код:
<html>
<head>
<title>Алло ты</title>
</head>
<body>
<script>
function getImage() {
const random = Math.floor(Math.random() * 2);
return '<img src="\@3\'+random+'.jpg" border="0" />';
}
document.getElementById("1").innerHTML = getImage();
document.getElementById("2").innerHTML = getImage();
</script>
<div>
<div id="1"></div>
<div id="2"></div>
</div>
</body>
</html>
Ответы (1 шт):
Символ обратной косой черты (обратный слеш) \ используется для экранирования символов. Обратная косая черта как бы "сливается" с последующим символом (или даже несколькими символами) в единый символ. Посмотрите пример:
console.log("\"\'\\\n\\\u0401");
Чтобы вставить в строку одиночный обратный слеш, напишите его дважды: "\\". (Ещё про специальные символы на learn.javascript.ru)
Также данная конструкция Math.floor(Math.random() * 2); возвращает целое число из отрезка [0, 1], а номера файлов у вас начинаются с единицы. В общем, как-то так:
function getImage0() {
const random = Math.floor(Math.random() * 2) + 1;
return '<img src=".\\@3\\' + random + '.jpg" border="0" />';
}
function getImage1() {
const random = Math.floor(Math.random() * 2) + 1;
return `<img src=".\\@3\\${random}.jpg" border="0" />`;
}
console.log( getImage0() );
console.log( getImage0() );
console.log( getImage1() );
console.log( getImage1() );