每当我按下一个按钮时,我打算从给定的字符串中显示一个字符。例如:第一次点击=>第一个字母,第二次点击=>第二封信等等。
这是我尝试过的代码:
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
function myFunction() {
var str = "This is a random string";
for(i = 0; i < str.length; i++){
var n = str.charAt(i);
document.getElementById("demo").innerHTML = n
};
}
虽然迭代遍历整个字符串,但是我编写的代码的不需要的结果仅在我单击按钮时显示最后一个字母。我错过了什么?
答案 0 :(得分:1)
使用全局计数器。
var counter = 0;
var str = "This is a random string";
document.getElementById("fnc").onclick = myFunction;
function myFunction() {
var n = str.charAt(counter);
counter++;
if (counter == str.length)
counter = 0;
document.getElementById("demo").innerHTML = n;
}
这里是JSFiddle。
答案 1 :(得分:0)
尝试在str
#demo
,myFunction
的引用
var str = "This is a random string",
curr = -1,
demo = document.getElementById("demo");
function myFunction() {
if (curr < str.length -1) {
var n = str.charAt(++curr);
demo.innerHTML += n;
}
}
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
答案 2 :(得分:0)
您正在点击处理程序中运行整个字符串。相反,您应该创建一个只增加i
一次的点击处理程序。这是一种方法:
var myFunction = function ( ) {
var str = "This is a random string";
var i = 0;
return function ( ) {
if ( i < str.length )
document.getElementById( "demo" ).innerHTML = str[i++];
};
}( );
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>