【发布时间】:2017-06-06 20:49:58
【问题描述】:
我正在尝试制作一个调用函数的点击处理程序;并且该函数获取一个字符串并基本上将最后一个字符切成薄片并将其添加到前面,并且每次再次单击时,它都应该将最后一个字母添加到前面。
起初看起来很简单,我以为我可以使用数组方法来完成。
function scrollString() {
var defaultString = "Learning to Code Javascript Rocks!";
var clickCount = 0;
if (clickCount === 0) {
var stringArray = defaultString.split("");
var lastChar = stringArray.pop();
stringArray.unshift(lastChar);
var newString = stringArray.join('');
clickCount++;
} else {
var newArray = newString.split("");
var newLastChar = newArray.pop();
newArray.unshift(newLastChar);
var newerString = newArray.join("");
clickCount++;
}
document.getElementById('Result').innerHTML = (clickCount === 1) ? newString : newerString;
}
$('#button').on('click', scrollString);
现在它只在我第一次点击时起作用,开发者工具说 newArray 是未定义的; clickCount 也停止增加。我不知道这是范围问题,还是我应该采取完全不同的方法来解决这个问题?
【问题讨论】:
标签: javascript arrays string scope closures