2017-02-09 6 views
0

"shape_7"이라는 이름의 요소가 표시되는지 확인하고 싶습니다. 나는 다음과 같은 자바 스크립트를 수행 할 때 그것을 잘 작동합니다 :JavaScript로 가시성 확인이 작동하지 않습니다.

var element = shape_7; 

if($(element).is(':visible')) 
{ 
//my code 
} 

을하지만, 나는 다음과 같은 자바 스크립트를 수행 할 경우 가 작동하지 않습니다 불행히도

var counter = 7; 
var element = 'shape_' + counter; 

if($(element).is(':visible')) 
{ 
//my code 
} 

, 내가 (번호와 두 번째 경우 필요 변수) 내 상황에서. 제대로 작동하려면 두 번째 코드를 어떻게 수정해야합니까?

도움을 주셔서 감사합니다. 당신이 window['shape_' + counter]처럼 뭔가를 할 수 있도록

+0

jQuery 호출이 DOM에서 ''을 (를) 찾으려고합니다. ** id ** "shape_7"을 가진 요소를 찾으려면, "# shape_7"'을 원할 것입니다. 그렇지 않으면 코드의 두 부분이 똑같은 일을합니다. – Pointy

+2

'shape_7'은 또 다른 변수 인 것처럼 보입니다. 그게 어디서 오는거야? 요소를 첫 번째 변수의 다른 변수와 동일하게 정의하는 반면, 두 번째 요소 선택기 문자열을 정의합니다. 두 번째 페이지에서 ''요소를 찾고 있습니다. – forrestmid

+1

코드를 https://jsfiddle.net에 게시하여 재현 할 수 있도록하십시오. –

답변

1

당신은 에 액세스 window 개체에 대한 당신의 shape_* 변수는이 전 세계적으로 정의 할 수 있습니다.

다시 수 있습니다. ...하지만 정말 그렇게 코딩해서는 안됩니다. 다음 var shapes = ['#first', '#second', '#third'];

당신이 인덱스 값에 액세스 할 수 있습니다 : 대신이 값으로 배열을 만드는 시도해야 $(shapes[0]);

window 개체에 대한

속성 설정을 기억하는 것은 의미들을 글로벌하게 모든 코드는 이러한 속성 값을 가져오고 설정할 수 있습니다. 따라서 나쁜 습관을 고려하고 있으므로 피해야합니다. Look into IIFE's

+0

완벽한! 대답 주셔서 대단히 감사합니다! 이제 완벽하게 작동합니다! – Tall83

+0

추가 설명해 주셔서 감사합니다. 나는 그것을 명심 할 것이다! – Tall83

0
var counter = 7; 
var element = 'shape_' + counter; 
if($('#'+ element).is(':visible')){//my code} 

//or you can use .length if it is visible in the DOM 
if($('#'+ element).length){//my code } 
+0

대단히 감사합니다! – Tall83

+0

당신은 환영합니다 :) 좋은 하루 되세요. –