函数运行所有条件,忽略当前变量
function runs all conditionals, ignores current variables
我创建了一些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');
}
}
所有条件都使用赋值而不是比较。
new_image = imageArray[2]
设置new_image
为imageArray[2]
的值,为真值。相反,你需要比较这两件事,例如
new_image === imageArray[2]
至于为什么它们都在运行,而不是在满足第一个条件时立即短路,这是因为您使用了一系列独立的if
语句,而不是if
, else if
和else
。
if(new_image === imageArray[0]){
...
} else if(new_image === imageArray[1]){
...
} else if(new_image === imageArray[2]){
...
} else {
// new_image doesn't meet any of the previous conditions
}
您在测试中使用的是"="而不是"=="。
(new_image = imageArray[1])
总是返回true
(new_image == imageArray[1])
相等性测试("==="将测试严格相等性)
您的条件将始终返回true。这是因为您将new_image
设置为imageArray[#]
的值。
if(new_image = imageArray[0]){
请注意,在上面一行中,您使用的是单个等号,而不是用于测试相等的双等号。单等号是赋值操作符。
应该写成:
if(new_image == imageArray[0]){
您也可以使用===
,它对两个值进行严格的比较。如果您想比较两个值的types
,这也很有用。
为什么赋值总是等于true呢?从技术上讲,它并不总是。等号右边的值是JavaScript正在测试的值。JavaScript会将此值转换为布尔值,而很多转换为布尔值的值恰好都变成了布尔值TRUE
。在您的特殊情况下,您正在测试字符串。当将任何String
转换为长度大于0的Boolean
时,将计算为TRUE
,这就是为什么您的代码不能像您希望的那样运行。
- 变量在运行时未定义,但在使用调试器时定义
- Javascript - 加载函数运行时未定义的变量
- PHP:运行后变量不工作“;如果“;命令
- Chrome扩展:是否有一种方法可以运行JavaScript来获取页面上的内部html,并将其保存到扩展中的变量中
- 当变量发生变化时运行PHP
- Javascript变量在函数运行后不断重置自身
- Scala提升了如何运行javascript函数并将返回值存储在变量中
- 在异步AJAX调用完成后,通过变量运行函数
- 如何更改javascript的一个变量,然后运行;“加载”;而无需重新加载页面
- 在单独的上下文中运行 js 代码并访问其全局变量
- 在运行时使用预先确定的对象分配变量
- 如何使用仅在运行时已知的变量名称调用 JavaScript 函数
- 如何在运行总计计算器时返回表单输入并更新 JavaScript 变量
- 将函数分配给javascript中的变量是否运行该函数
- 在函数声明而不是运行时分析所有变量
- 代码在shell中运行,但提供'可以't查找变量'从文件运行时出错
- 无法使用Node.js中的多个用户定义变量运行MYSQL查询
- 将控制器或服务作为变量运行
- 从字符串和解析变量运行函数
- 从Javascript代码中提取大约10个变量(运行后)并写入页面