2012-03-06 2 views
1

오른쪽 http://gidzior.net/svg/pom01.html 패널은 '# 오른쪽 패널 리'와 빨간 버튼은 'div.save' '# 오른쪽 패널에서지수는 전 버튼을 클릭하는거야 때마다 변화

버튼입니다 리 '창이 열리면'div.save '버튼을 닫은 다음'# 오른쪽 패널 리 '가 다시 열어야합니다.

1에서 9까지의 숫자가있는 버튼을 클릭하면 스크립트는 0을 작성합니다. 숫자 1-9이고 인덱스는 01,02,03 ...입니다. 인덱스를 다시 클릭하면 인덱스는 001, 002, 003, ...입니다. 어떻게 인덱스를 동일하게 설정합니까? 시간 ?? 01, 02, 03, 04, 05, 06, 07, 08, 09

//OPEN A WINDOW 
    $('#right-panel li').each(function(e){ 
     var i = $(this).index()+1; 
     $(this).click(function(){ 
      if(i<=9){ 
       i = "0"+i; 
      } 
      $('#pom01par'+i+'WraperAbsolute').fadeIn("fast"); 
      $('#pom02par'+i+'WraperAbsolute').fadeIn("fast"); 
      $('#pom03par'+i+'WraperAbsolute').fadeIn("fast"); 
      $('#pom04par'+i+'WraperAbsolute').fadeIn("fast"); 
      $('#pom05par'+i+'WraperAbsolute').fadeIn("fast"); 
      $(this).css('background','#adff84'); 
      $('.par'+i+'table').css('background','#adff84'); 
      return false; 
     }); 
    }); 


    // CLOSE A WINDOW 
    $('div.save').click(function(){ 
     $(this).parent().fadeOut("fast"); 
    }); 
+0

나는 그것이 당신의 컨텍스트에서 문자열, 숫자가 아닙니다. –

+0

@EvilP : 그것은 다양합니다. 숫자로 시작한 다음 문자열이됩니다. –

답변

1

나를 밖으로 점프에 문제가 있습니다 : 당신은 내가 값을 수정하는

if(i<=9){ 
    i = "0"+i; 
} 

;

대신 클릭 기능에 또 다른 변수를 사용

$('#right-panel li').each(function(e){ 
     var i = $(this).index()+1; 
     $(this).click(function(){ 
      var this_i = i; 
      if(this_i<=9){ 
       this_i= "0"+i; 
      } 
      $('#pom01par'+this_i+'WraperAbsolute').fadeIn("fast"); 
      $('#pom02par'+this_i+'WraperAbsolute').fadeIn("fast"); 
      $('#pom03par'+this_i+'WraperAbsolute').fadeIn("fast"); 
      $('#pom04par'+this_i+'WraperAbsolute').fadeIn("fast"); 
      $('#pom05par'+this_i+'WraperAbsolute').fadeIn("fast"); 
      $(this).css('background','#adff84'); 
      $('.par'+this_i+'table').css('background','#adff84'); 
      return false; 
     }); 
    }); 
+0

이 완벽하게 작동합니다. THX 많이 – gidzior

+0

나는 완벽하게 의미합니다 :] – gidzior

0

나는 당신이 click( 기능의 범위에 i를 정의해야한다고 생각, 또는 더 나은 미처 그것을 전혀 정의하지 않습니다 :

$(this).click(function(){ 
var iAsString = $(this).index()+1 + "";    
if($(this).index()+1<=9){ 
       iAsString = "0"+iAsString; 
      } 
+0

01, 02, 03 ... 09에 대해서만이 조건을 쓰는 방법? – gidzior

-1

나는 왜 그런 일을하는지 이해하지 못한다. 그러나 나는 매우 짧은 해결책을 가지고왔다. 이 방법

if(i<=9 && i.length==1){ 
    i = "0"+i; 
} 

에게 조건 당신이 숫자로와 문자열로 i 양의 값을 확인거야이 방법을 수정하려고합니다.

+0

어? 'length'는 함수가 아니므로'= '가 누락되었습니다. ... – elclanrs

+0

'length'는 문자열이 아닌 함수의 속성입니다. 조건은'if (i.length == 1) i = "0"+ i와 같이 두 개의'= '로 작성됩니다. –

+0

예, 실수를 빨리 작성했습니다 ... 대답 편집 – themarcuz

0

오류에 대해 확실하지 않습니다.

하지만 내 색인을 만들어 봅니다.

변경

var i = $(this).index()+1; 

++ 내가 넣어 루프의 끝에서

var i = 1; 

에 의해;

$('#right-panel li').each(function(e){ 
...... 
i++; 
}