В настоящее время я создаю веб-сайт как часть своего курса по ИТ, и я немного смущен, почему что-то не работает. У меня это получилось, когда пользователь нажимает на заголовок курса, появляется текст, предоставляющий больше информации, но мне также хотелось бы, чтобы изображение менялось, когда они нажимали, чтобы было немного легче понять. Вот код JavaScript:
<script language="javascript">
function changeImage()
{
if (document.getElementById("imgClickAndChange").src=="C:\Users\James\Documents\School\College\BTEC Level 3 in Computing\Unit 28 - Web Production - Zoe\Website\images\hiddenTab.jpg")
{
document.getElementById("imgClickAndChange").src=="C:\Users\James\Documents\School\College\BTEC Level 3 in Computing\Unit 28 - Web Production - Zoe\Website\images\openTab.jpg";
}
else
{
document.getElementById("imgClickAndChange").src=="C:\Users\James\Documents\School\College\BTEC Level 3 in Computing\Unit 28 - Web Production - Zoe\Website\images\hiddenTab.jpg";
}
}
</script>
и соответствующий бит HTML:
<img alt="" src="images/hiddenTab.jpg"style="height:22px; width:22px;" id="imgClickAndChange" onclick="changeImage()"/></p>
Любые идеи относительно того, почему он не работает? Заранее спасибо.
EDIT: Правильно, теперь он работает, за исключением того, что когда я нажимаю изображение, чтобы свернуть текст, изображение не возвращается обратно к hiddenTab.jpg. Любые идеи относительно того, почему он это делает?
Вы используете ==
(тестирование, если оно равно), а не =
(присвоение значения переменной) внутри операторов if
и else
.
PS: вы должны изменить источник пути, ваше решение не так твердо сейчас
вы использовали "==" вместо "=", первым является логическое условие, а второе фактически устанавливает его
Надеюсь, это поможет.
Этот document.getElementById("imgClickAndChange").src
возвращает полный путь с вашим доменным именем. Поэтому компиляция его с помощью ваших "images/openTab.png" никогда не возвращает true
.getAttribute("src")
возвращает точное значение вашего значения атрибута src
Также вы используете == при назначении значений. в то время как == используется для сравнения и = используется для назначения.
<script language="javascript">
function changeImage() {
if (document.getElementById("imgClickAndChange").getAttribute("src") == "images/hiddenTab.png") {
document.getElementById("imgClickAndChange").src = "images/openTab.png";
}
else {
document.getElementById("imgClickAndChange").src = "images/hiddenTab.png";
}
}
</script>
В HTML вы используете относительный путь и в абсолютных путях JS.
function changeImage()
{
if (document.getElementById("imgClickAndChange").src === "images\hiddenTab.jpg")
{
// here you use "=" and not "=="
document.getElementById("imgClickAndChange").src = "images\openTab.jpg";
}
else
{
document.getElementById("imgClickAndChange").src = "images\hiddenTab.jpg";
}
}
a
, f
, n
, r
, t
, v
, b
, u
, x
или 0
.
Это будет работать только на вашем локальном компьютере, даже если это правильно. Абсолютный путь будет работать только на компьютере, если на этом компьютере есть структура каталогов и файл. Относительный путь будет интерпретироваться веб-сервером соответственно и будет представлен конечному пользователю вместе с документом.
Также, если вы используете полный путь как условие, это не произойдет, и вы перейдете к другому.
Когда вы присваиваете значение свойства, вы должны использовать =, и когда вы сравниваете 2 значения, вы должны использовать ==
Более приятная версия вашего кода будет:
<script language="javascript">
function changeImage()
{
if (document.getElementById("imgClickAndChange").src=="images/hiddenTab.jpg")
{
document.getElementById("imgClickAndChange").src="images/openTab.jpg";
}
else
{
document.getElementById("imgClickAndChange").src="images/hiddenTab.jpg";
}
}
</script>
if