2

다음 요소를 "덮어 쓴"것으로 간주해야하는지 확인해야합니다.표현식이 TRUE 일 수 없으면 TRUE로 평가됩니다.

요소가 표시되지 않아야하는 경우 state === 'hover'으로 설정되어 있기 때문에 매우 혼란 스럽습니다.

alert 메시지가 사실로 평가 된 표현식이 (논리적으로 생각하면) 표현해서는 안되기 때문에 메시지가 더 혼란 스럽습니다. 이 같은 alert 메시지에

if((ig.gui.cursor.pos.x >= element.pos.x) 
    && (ig.gui.cursor.pos.x <= element.pos.x + element.size.x) 
    && (ig.gui.cursor.pos.y >= element.pos.y) 
    && (ig.gui.cursor.pos.y <= element.pos.y + element.size.y) 
    && !element.disabled) { 

    state = 'hover'; 

    alert(

     'This statement evaluates to true: ' 

     + ig.gui.cursor.pos.x 
     + '>=' 
     + element.pos.x 
     + '&&' 
     + ig.gui.cursor.pos.x 
     + '<=' 
     + element.pos.x 
     + '+' 
     + element.size.x 
     + '&&' 

     + ig.gui.cursor.pos.y 
     + '>=' 
     + element.pos.y 
     + '&&' 
     + ig.gui.cursor.pos.y 
     + '<=' 
     + element.pos.y 
     + '+' 
     + element.size.y 
     + '&&' 

     + (!element.disabled) 

    ); 

} 

위의 코드 결과 :

alert message

은 확실히 우리 모두 580 <= 60 + 48 오른쪽 FALSE로 평가 동의 할 수 있습니까?

그럼에도 불구하고 경고가 여전히 불렀다

...

+4

'console.log()'를 사용하여 틀린지 확인하십시오 ('alert()'이 아님) – zerkms

+3

당신은 모두 정수입니까? 문자열 "5 .."<= "6 ..."을 볼 수 있기 때문에 – slebetman

+0

비교의 값이 문자열 일 수 있습니까? –

답변

6

element.pos.x 문자열 ("60")입니다. 당신은 그것 (그리고 비교에서 다른 모든 문자열)을 다시 숫자로 변환해야 할 것입니다.

+1

If 당신은'+'를'-'s로 바꾸거나 접두사'+'연산자를 사용하면 잘 될 것입니다. 'element.pos.x + element.size.x' ->'element.pos.x - -element.size.x' 또는'+ element.pos.x + + element.size.x'는 빼기 연산자와 접두사'+'연산자는 숫자에 대한 인수를 강요합니다. –

+0

이 대답이 사실이라면 나는 '580> = 60'과'580 <= 6048' 등으로 끝납니다. – TLS

관련 문제