2017-02-25 3 views
-1

질문 2에서 false를 반환합니다.peventDefault() 및 addEventListener

  1. 이유가 e.preventDefault();인데 return false;을 쓸 수 없습니까? (작동하지 않습니다) 이벤트의 목적이 경우 menu.onclick = func.. return false;을 통해 작동하지만.
  2. 왜 삼항 연산자 단어 return을 사용할 수 없으며 ":"로 시작하는 부분을 무시할 수 없습니까?
부모 요소 마크 업 DIV 번호 메뉴> UL> 리 할당

핸들러>은

<div id="menu"> 
    <ul> 
    <li><a href="...">link</a></li> 
    </ul> 
</div> 
menu.addEventListener("click", disableLinks, false); 

function disableLinks(e) { 
    e.target.nodeName == "A" ? e.preventDefault() : true; 
} 
+0

가능한 [event.preventDefault() 대 false 반환] (http://stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false) – gyre

+0

1. 두 가지의 차이점을 확인하십시오. 방법 [여기] (https://stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false); 2. 다음과 같이 삼항 연산자로'return' 할 수 있습니다 :'return condition? – gyre

답변

0
  1. 왜 e.preventDefault은(); false를 반환 할 수 없습니다. ? (작동하지 않습니다) menu.onclick = func을 통한 이벤트의 경우에도 그렇습니다. return false; 공장.

간단하게 작동하는 방식입니다. HTML 속성의 인라인에 추가되거나 onclick 속성에 직접 할당 된 이벤트는 false를 반환하여 취소 할 수 있습니다. .addEventListener()을 사용하여 추가 된 이벤트의 경우 e.returnValue = false을 사용하여 동일한 효과를 얻을 수 있지만 .preventDefault()은 기본 동작을 방해하는 표준 방법입니다. AFAIK, false를 반환하는 옵션은 W3C 표준에 정의되어 있지 않습니다.

var menu = document.getElementById('menu'); 
 
menu.addEventListener("click", disableLinks, false); 
 

 
function disableLinks(e) { 
 
    e.returnValue = false; 
 
}
<div id="menu"> 
 
    <ul> 
 
    <li><a href="http://www.yahoo.com">link</a></li> 
 
    </ul> 
 
</div>

  1. 삼항 연산자는 단어의 반환을 사용할 수 없으며이로 시작하는 부분을 무시하는 것은 불가능 왜 ":"를?

조건부 연산자 세 식 구성과?: 의해 분리된다. 표현식에는 return을 포함 할 수 없습니다. 당신이 조건식을 사용하려는 것 같습니다

return somethingIsTrue ? 'yay!' : 'no!'; 

: 조건 연산자 (즉 그것을 위해 무엇의) 가치로 평가 이후에

그러나, 당신은 그것을 평가하는 가치를 return 수 있습니다 if-else 문에 대한 게으른 대체 문과 같지만 if-else 문 대신 사용할 수는 없습니다. if-else 문을 사용하려면 하나를 사용하십시오.

""으로 시작하는 부분을 무시하는 것은 불가능합니다. " 의미.