使用输入从函数内部更改全局变量的值

时间:2017-03-03 06:03:49

标签: javascript

我有一个

var imgSrc = false;
dom.getElByTag('img')[0].onclick = function(){
  //set src of image
  changeBool(dom.getElByTag('img')[0]);
}

function changeBool(n){
    if(n.src ===="file/path"){
    imgSrc = true;
};

console.log(imgSrc);

所以问题是imgSrc只在changeBool中本地更改,所以如果我console.log imgSrc它将返回false,无论我把它放在哪里(这可能是因为页面已经加载并且判断imgSrc之前是假的我使用onclick将其设置为true,并且由于javascript一次运行一行,因此在我甚至可以单击图像之前运行console.log(imgSrc)为false。

所以,我需要:

将布尔值声明为false - >单击图像,将布尔值设置为true - > console.logging boolean(并看到true)

但我现在正在做的是: 将布尔值声明为false - > console.logging boolean(并看到false {因为它尚未设置为true}} - >单击图像并将布尔值设置为true。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

只需将您的日志记录语句移动到changeBool函数中,如下所示:

var imgSet = false;
dom.getElByTag('img')[0].onclick = function(){
  //set src of image
  changeBool(dom.getElByTag('img')[0]);
}

function changeBool(n){
    if(n.src ===="file/path") imgSrc = true;
    console.log(imgSrc);
};

答案 1 :(得分:1)

在第一行代码中,

var imgSet = false;

需要改为

var imgSrc = false;