尝试用javascript函数设置全局变量
Trying to set a global variable with javascript function
所以我在rails中制作一个小闪存卡应用程序,我使用javascript进行卡片逻辑。我是JS的新手,我遇到了一些麻烦,resetting
, variables
,我使用的front
和back
卡基于我的randomizing function
的结果
<script>
var card_list = "<%=j @deck.cards.to_json.html_safe %>";
console.log(card_list)
/* Parse the Json and get all the cards */
var cards = JSON.parse(card_list);
/* Return json object count */
var length = Object.keys(cards).length;
console.log(length)
/* Grab a random card from the card list */
var rand = cards[Math.floor(Math.random() * cards.length)];
console.log(rand)
/* Set the front label from random value */
var front = rand.front;
console.log(front)
/* Set the back label from random value */
var back = rand.back;
console.log(back)
/* Grab the div and set the label */
var elem = document.getElementById("card-face");
elem.innerHTML = rand.back;
/* Grab another random card from the card list */
function randomCard() {
var rand = cards[Math.floor(Math.random() * cards.length)];
console.log(rand)
if (typeof front !== 'undefined') {
alert("Undefined");
}
else{
var front = rand.front;
var back = rand.back;
console.log("Should now be updated?")
};
var elem = document.getElementById("card-face");
elem.innerHTML = rand.back;
}
/* Flip the card front to back */
function flipper() {
var elem = document.getElementById("card-face");
if (elem.innerHTML== rand.front) elem.innerHTML = rand.back;
else elem.innerHTML = rand.front;
console.log(elem)
}
</script>
当我运行randomCard
函数时,elem.innerHTML = rand.back;
被更新为新的'rand。但是当我翻转卡片'rand.front'和rand.back
返回会话开始时设置的初始值时。我如何具体地更新这些值?
在randomCard
函数中,每次执行函数并使用var
声明变量时,都要在该函数的局部作用域中创建新的front
和back
变量。
由于名称为front
和back
的变量现在位于该函数的局部作用域中,因此赋值发生在局部front
和back
变量上,因为它们存在于直接上下文中;它不需要查看randomCard
函数之外的上下文,其中front
和back
变量是您想要更新的。
为了获得你想要的行为,简单地不要用var
关键字声明front
和back
变量,在你的randomCard
内,这样对它们的任何赋值都发生在外部的front
和back
replace
var rand = cards[Math.floor(Math.random() * cards.length)];
rand = cards[Math.floor(Math.random() * cards.length)];
相关文章:
- 在javascript函数中设置全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 使用eval()设置全局变量
- Ajax设置全局变量,但外部值消失
- 更新后,父视图未在 Electron 中的
上设置全局变量 - 为什么在定义回调/侦听器函数(异步消息传递,port.on)后没有立即设置全局变量
- 如何在不设置全局变量的情况下确定是否已调用函数
- 在函数内设置全局变量
- jQuery / JS设置全局变量,但卡在传递给AJAX自定义函数
- 在 jsdom 加载的脚本中设置全局变量
- 设置全局变量,但未获得预期结果
- 延迟调用 dojo widget 中的函数,直到设置全局变量
- 如何在Javascript中设置全局变量
- ngresource在成功响应中设置全局变量
- 如何在点击事件中设置全局变量
- 通过future函数循环和设置全局变量
- 尝试用javascript函数设置全局变量
- jQuery Ajax Post -无法使用回调函数设置全局变量
- jQuery load()函数不设置全局变量
- 设置全局变量并在jquery/javascript中访问它