如果/ else javascript函数每次都不起作用

时间:2017-07-25 20:55:25

标签: javascript

在Javascript代码段中设置if / else函数:

function compareStatus() {
  if(valueTruebutton === statusRandomrapper) {
    alert("Both status are true");
  } else {
    alert("Nah, those status are different");
  }
}

我使用的两个变量来自:

var valueTruebutton = document.getElementById("truebutton").value;

var rapperA = {firstName:"A$AP Rocky", image:"test.jpg", clip:"test.com", status:"true", smallthumbnail: "test.png"};

真正的按钮来自这一行:

 <button id="truebutton" onclick="compareStatusTrueButton()" style="background-color: #4BCC92; border: none; font-size: 2em;" value="true">True</button>

完整的参考代码是here。基本上我为页面中的2个元素赋值,我尝试比较函数。 大部分时间它都能正常工作,但有时它无效。

我试图通过在控制台中打印两个值来调试它:

 console.log("randomRapper.name:" + randomRapper.firstName + ", randomRapper.status: " +  randomRapper.status + " valueTruebutton: " +  valueTruebutton + " valueFalsebutton: " +  valueFalsebutton )

甚至添加了typeof以确保该值具有相同的格式。在[sample我点击了'false'按钮,该按钮分配了'false'值,即使Rapper的'status = false',它也不会将两个值都检测为相同的值。

*修改:直播页面以查看实时问题https://principal-audits-75550.netlify.com

* 2nd Edit:添加了console.log typeof,所有这些都是'string'enter image description here

2 个答案:

答案 0 :(得分:0)

如果您想正确选择一个随机说唱歌手,那么您应该按如下方式进行: var randomRapper = rappers[Math.floor(Math.random()*rappers.length)]; var statusRandomrapper = randomRapper.status;

原因:Math.random,正如预期的那样,每次调用时都会提供一个随机值。由于目前只有3个说唱歌手,结果有时会匹配,有时则不会。如果你有一个1000名说唱歌手的名单,通常你会得到错误的结果。

答案 1 :(得分:0)

问题

在您的代码中,您声明两个值:

var statusRandomrapper = rappers[Math.floor(Math.random()*rappers.length)].status;
var randomRapper = rappers[Math.floor(Math.random()*rappers.length)];

statusRandomrapper是随机说唱歌手的状态,randomRapper是包含不同说唱歌手的对象。

所以,当你去检查价值时,你要检查另一个说唱歌手。

解决方案

您需要做的是:

var randomRapper = rappers[Math.floor(Math.random()*rappers.length)];
var statusRandomrapper = randomRapper.status;

此代码仅生成一个说唱歌手(randomRapper),然后将statusRandomrapper设置为该对象的status字段。