내가 그것에 단일 버튼 HTML 파일이 예상 (기능) 배의 시간 함수를 실행자바 array.forEach
<!DOCTYPE html>
<html> <body>
<p>Click the button to list all the items in the array.</p>
<button onclick = "numbers.forEach(myFunction)" >Try it</button>
<p id="demo"></p>
</body>
</html>
I 또한 .forEach
방법에 대한 onclick
함수를 포함하는 자바 스크립트 파일을 .
버튼을 클릭하면 배열의 각 요소 인스턴스를 반복하면서 배열을 살펴보고 싶습니다.
이 배열의 모든 요소에 대해 다음 순열을 표시하기 위해 잠시 기다리는 타이머와 함께 색인 및 값을 인쇄하고 싶습니다. 나는 사용자가 버튼을 클릭 할 때 표시 할 결과를 원하는 무엇
demoP = document.getElementById("demo");
var numbers = [];
var random = Math.floor(Math.random() * 4) + 1;
numbers.push(random);
function myFunction(item, index) {
random = Math.floor(Math.random() * 4) + 1;
numbers.push(random);
demoP.innerHTML = demoP.innerHTML + "numbers[" + index + "]: " + item + "<br>";
//demoP.innerHTML = demoP.innerHTML + "<br>" //add magic spacing between permutation
sleep(100);
//switch to this and see how slow?
//sleep(1000);
}
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
은 다음과 같습니다 등등
numbers[0] = 4
//waits a second and adds a <br> here to separate
numbers[0] = 4
numbers[1] = 2
//waits a second and adds a <br> here
numbers[0] = 4
numbers[1] = 2
numbers[2] = 3
합니다.
현재 코드는 적어도 두 배의 요소를 출력하며 sleep()은 필요한 것보다 오래 지속되는 것으로 보입니다.
'휴면'기능을 추가하지 마십시오. 대신'setTimeout'이나'setInterval'과 같은 것을 통해 asyc 호출을하는 법을 배웁니다. 또한 실행될 때 코드를 추적하기 위해'console.log'를 사용하는 것을 고려하십시오. 'forEach'를 수행하는 동안 배열'numbers'를 변경하기 때문에 문제가 있는지 묻습니다. 그리고 DOM 엘레멘트'onclick' 애트리뷰트 안에서'forEach'를하는 것이 최선의 방법은 아닙니다. 'onclick' 함수를 호출하고 그 함수에서'forEach'를합니다. – Intervalia
@Intervalia 인터벌 시간에 문제가있어서 'setTimeout'또는 'setInterval'대신 'sleep()'테스트를 사용했습니다. – Jamin
@Jamin 나는 내 대답에 실수를했다. 새로운 업데이트 된 내용을 읽어보십시오. 죄송합니다! –