我创造了一些div;他们的innerHTML属性根据显示的当前图像(由imageArray[value]
定义)进行更改。我遇到的问题是这个函数中的条件不能正常工作。此函数运行每个语句,并停在最后一个条件括号中的值。这可能是一个逻辑问题或缺少一段代码,但我想对如何解决这个问题有所了解。
此功能通过prevImage()
或nextImage()
:
function textChange(){
var titleMod = document.getElementById('title');
var dateMod = document.getElementById('date');
var infoMod = document.getElementById('info');
var pagelink = document.getElementById('enter');
if(new_image = imageArray[0]){
titleMod.innerHTML = "This is Image 1";
dateMod.innerHTML = "july 12 12";
infoMod.innerHTML = "<p>paragraph goes in here</p>";
pagelink.onclick = "window.location.href='house.html';"
alert('\o/');
}
if(new_image = imageArray[1]){
titleMod.innerHTML = "This is Image 2";
dateMod.innerHTML = "july 12 19";
infoMod.innerHTML = "<p>paragraph</p>";
pagelink.onclick = "window.location.href='contact.html';"
alert('lolol');
}
if(new_image = imageArray[2]){
titleMod.innerHTML = "This is Image 3";
dateMod.innerHTML = "july 12 19";
infoMod.innerHTML = "<p>paragraph</p>";
pagelink.onclick = "window.location.href='contact.html';"
alert('thisWorks');
}
}
答案 0 :(得分:1)
您在测试中使用的是做法运算符“=”而不是“==”。
(new_image = imageArray [1])
始终返回true
(new_image == imageArray [1])
测试是否相等(“===”将测试严格的相等性)
答案 1 :(得分:1)
所有条件都使用赋值而不是比较。
new_image = imageArray[2]
将new_image
设置为imageArray[2]
的值,这是一个真值。你需要比较两件事,例如。
new_image === imageArray[2]
至于为什么它们都在运行,而不是在第一个条件满足后立即短路,这是因为你使用的是一系列独立的if
语句,而不是{ {1}},if
和else if
。
else
答案 2 :(得分:0)
您的条件将始终返回true。这是因为您将new_image
设置为imageArray[#]
的值。
if(new_image = imageArray[0]){
请注意,在上面一行中,您使用单个等号而不是测试相等性的双等号。单个等号是赋值运算符。
相反,该行应写为:
if(new_image == imageArray[0]){
您还可以使用===
对这两个值进行严格比较。如果您想比较两个值的types
,这非常有用。
那么为什么作业总是如此?从技术上讲,它并不总是如此。等号右侧的值是JavaScript测试的值。 JavaScript会将此值转换为布尔值,而转换为布尔值时,相当多的值将成为布尔值TRUE
。在您的特定情况下,您正在测试字符串。转换为长度大于0的String
时,任何Boolean
都会计算为TRUE
,因此您的代码无法正常运行。