일반적으로 setTimeout() 메소드의 실행은 setTimeout() 메소드 외부에있는 clearTimeout() 메소드로 중단되지만, 제 상황에서는 중단해야합니다. 지정된 "대기 기간"동안 특정 이벤트가 발생하면 루프 자체 내에서 setTimeout() 루프를 실행합니다.setTimeout() 함수 내에서 clearTimeout() 액션을 시뮬레이트합니다.
아래에 표시된 내 코드에서 사용자는 코드 A를 활성화하기 위해 500 밀리 초를 얻습니다. 코드 프레임이 시간 프레임 내에 활성화되지 않으면 코드 B가 대체로 실행됩니다. 코드 A에서 나는 1) 제한 시간을 멈추게 할 곳과 2) 기능을 종료하고 싶은 곳이라는 두 곳을 표시했습니다.
내 자바 스크립트와 HTML 코드의 사본은 다음과 같습니다
HTML
<table id="headMenu">
<tr>
<td id="head1">Item 1</td>
<td id="head2">Item 2</td>
<td id="head3">Item 3</td>
</tr>
</table>
<table id="subMenu">
<tr>
<td>Dynamic Content!</td>
</tr>
</table>
자바 스크립트
a = 500;
document.getElementById("head1").onmouseover = function(displayMenu) {
document.getElementById("subMenu").innerHTML = "<tr><td>Item A</td><td>Item B</td><td>Item C</td></tr>";
document.getElementById("head1").onmouseout = function(getScroll) {
setTimeout(function() {
document.getElementById("subMenu").onmouseover = function(breakTimeout) { // **Code A**
a = 10000;
// **Stop timeout.** Now never execute Code B.
document.getElementById("subMenu").onmouseout = function(endFunction) {
document.getElementById("subMenu").innerHTML = '<tr><td>Content is Dynamic!</td></tr>';
// **Exit function here immediately**
}
}
if(a==500){
//**Code B**: Only execute if **Code A** never executed within time frame
document.getElementById("subMenu").innerHTML = '<tr><td>Dynamic Content!</td></tr>';
}
}, a)
}
}
나는 희망을 내 디자인의 개념 또한 분명합니다. 코드와 설명이 명확하지 않은 경우 추가 질문을 명확하게 해 드리겠습니다.
답을 얻을 수있는 누구에게나 고맙습니다. +1.
당신은 설명 할 수 - 귀하의 페이지에 HTML 요소에 대한 특정 참조 - 당신이 원하는? –
mouseover id = "head1"일 때 id = "submenu"인 getinnerHTML을 사용하여 Item A Item B 항목 C 메뉴를 표시합니다. "head1"의 Onmouseout은 마우스가 id = "submenu"(즉, 해당 메뉴를 스크롤)로 이동하지 않은 한 500 밀리 초 후에 하위 메뉴를 숨 깁니다. true 인 경우 마우스가 하위 메뉴를 떠날 때까지 하위 메뉴를 숨기지 않습니다. true 인 경우 submenu.innerHTML을 '동적 콘텐츠'로 즉시 변경하십시오. – Wagtail