2014-09-28 2 views
-1

내가 원하는 일은 ... 이미지 'x'를 클릭하면 다시 클릭 할 때 이미지가 변경되기를 원한다. 그래서 네 번째, 그러나 나는 단지 이것이 두 번째 클릭에서 발생하기를 원합니다. 그것을 클릭하면첫 번째 클릭 후 앞뒤로 이미지 변경 src

그래서 X를 클릭 & 아무것도 난 후, 페이지를 재설정 할 때까지 , 다시 다시 다시 클릭 한 후 이미지, 다음 및 변경 한 다음 앞뒤로 그 후 번갈아 그런
을 발생하지 리셋을 원하십시오. 당신이 함수 내부의 var에 ClickedOnce을 선언하고 있기 때문에

document.getElementById('x').onclick = function() { 
    var ClickedOnce = 0; 
    if (this.src == 'Media/Images/Other/SwitchUP.jpg') { 
    ClickedOnce + 1 
} 
if (this.src == 'Media/Images/Other/SwitchUP.jpg' && ClickedOnce > 1) { 
    this.src = 'Media/Images/Other/SwitchDOWN.jpg'; 
} else if ('Media/Images/Other/SwitchDOWN.jpg') { 
    this.src = 'Media/Images/Other/SwitchUP.jpg'; 
} 
} 
+2

당신은 항상 jsfiddle 같은 것을 사용할 수있는 코드의 유효성을 검사하는 데 사용할 수있는 javascript lint가 내장되어 있습니다. –

+0

음 ... 다른 방법으로 할 수 있습니다. '' 다음 스크립트 'MyFunction 함수 (O) { 에서 (o.src == '미디어/이미지/기타/SwitchUP.jpg') { o.src = '미디어/이미지하다면 /Other/SwitchDOWN.jpg '; } else { o.src = '미디어/이미지/기타/SwitchUP.jpg'; } }' – Pierre

+0

'src' 속성을 검색하기 위해'getAttribute'를 사용하면'src' 속성이 완전한 경로를 반환 할 것이고 예상대로 결과가 나오지 않을 것입니다. 게다가 : else if 조건은 항상 true를 반환합니다. –

답변

1

그것은이 작동하지 않는 이유처럼 보인다는 다음과 같습니다

이 지금까지 내 코드입니다. 즉, 함수가 호출 될 때마다 0으로 설정되는 해당 함수 내부의 지역 변수입니다. 따라서 클릭 할 때마다 동일한 문제가 발생합니다.

함수 외부에서 일부 변수를 선언 해보십시오.

당신은이 같은 시도 할 수 있습니다 : 당신이 jQuery로이 질문에 태그 이후,

var wasClicked = false; 

document.getElementById('x').onclick = function() { 
    if (!wasClicked) { 
     wasClicked = true; 
     return; 
    } 
    if (this.getAttribute("src") == 'Media/Images/Other/SwitchUP.jpg') { 
     this.setAttribute("src", 'Media/Images/Other/SwitchDOWN.jpg'); 
    } else { 
     this.setAttribute("src", 'Media/Images/Other/SwitchUP.jpg'); 
    } 
} 

추가를, 여기에 jQuery를 접근 방식이다

var wasClicked = false; 

$(document).ready(function() { 
    $("#x").click(function() { 
     if (!wasClicked) { 
      wasClicked = true; 
      return; 
     } 
     if ($(this).attr("src") == "path/to/some/image") { 
      $(this).attr("src", "path/to/other/image"); 
     } else { 
      $(this).attr("src", "path/to/some/image"); 
     } 
    }); 
}); 
+0

'return;'else if 절대로 if 문에 도달하지 않거나 거기에서 논리를 변경하지 않습니다. 이 전체 함수/문장은 이해가되지 않습니다. – Pierre

+0

'return;'이 필요합니다. 묻는 사람은 이미지를 처음 클릭 할 때 아무 것도하지 않으려합니다. 그래서 if 문 안쪽을 클릭하여 아직 클릭했는지 확인합니다. 그렇지 않은 경우 반환합니다 (아무 것도하지 않음). 그 후마다, wasClicked는 true가 될 것이고, 나머지 함수를 평가할 것입니다. –

+0

내가 입력 할 때 닫혀 있었기 때문에 내가 대신 게시 할 수 없었던 대안은 첫 번째 클릭 설정에서 onclick = toggle 함수 였고 그 다음에 toggle : toggle과 같이 시도 할 수있었습니다 : // 첫 번째 클릭 - 클릭 이벤트를 토글로 설정 document.getElementById ('x'). onclick = function() { this.onclick = toggleImages(); } // toggle toggleImages() { var up = '미디어/이미지/기타/SwitchUP.jpg'; var down = '미디어/이미지/기타/SwitchDOWN.jpg'; this.src = (this.src == up)?아래 : 위로; } – Prescott

관련 문제