2016-08-14 1 views
-4

저는이 코드가 꽤 오래 동안 실행되도록 노력했지만 행운은 없습니다.Else 함수가 작동하지 않습니다.

function clicck() { 
if(f == 129) { 
    document.getElementById("displayy").style.display = "none"; 
    return f; 
} else { 
    document.getElementById("displayy").style.display = "inline"; 
} 
} 
var lkj = document.getElementById("displayy"); 
var f = lkj.offsetHeight; 

이 코드 표시가 설정 "displayy"요소 (F)의 값 것도 처음이 기능이 활성화되어 0으로 설정되지 않는다. 그러나 f 변수가 0 인 경우 함수가 활성화되면 else 함수는 인라인 표시를 설정하지 않습니다. 이 오류의 원인은 무엇입니까?

+1

당신이 무엇을하려고에 더 많은 배경을주세요,도 도울 수있는 변수를 의미있는 이름을 부여. –

+0

이 문장'var f = lkj.offsetHeight; '는'f'가 항상 요소의 오프셋 높이와 같은 값을 가짐을 의미하지는 않습니다. 붙여 넣은 코드에서 f는 초기 값 * 만 가지고 변경되지 않습니다. 코드가있는 경우'f'를 변경하는 코드를 붙여 넣으십시오. – ppeterka

+0

올바른 방법으로 코드를 얻는 방법을 모르므로 그대로 붙여 넣습니다. \t \t

\t \t
  • Flowers by ocassion
  • \t \t
  • Birthday
  • \t \t
  • Aniversery
  • \t \t
  • Funeral
  • \t \t
  • Wedding
  • \t \t
  • Valentine
  • . 이것은 첫 번째 js 스크립트이므로, 내가하는 일에 대해 거의 알지 못합니다. var f는 함수가 활성화 될 때마다 바뀌며 if (f == 129) {style.display = "none"} 때문에 0으로 변경됩니다. 적어도 그것은 내가 생각하는 것입니다. @ppeterka –

    답변

    1

    f 값을 검색하는 코드는 함수 외부에 있으므로 한 번만 설정됩니다. 대신이 시도 :

    function clicck() { 
        var lkj = document.getElementById("displayy"); 
        var f = lkj.offsetHeight; 
        if(f == 129) { 
         lkj.style.display = "none"; 
         return f; 
        } else { 
         lkj.style.display = "inline"; 
        } 
    } 
    
    1

    f의 값은 스크립트가 처음 실행될 때 설정됩니다. 당신은 그것을 바꿀 코드를 작성하지 않았습니다. 그래서 항상이 129 일 것입니다 (또는 항상 다른 129 일 수 있습니다).

    기능 내부에서 다시 측정해야합니다.

    관련 문제