2017-02-09 61 views
0

我想檢查名稱爲「shape_7」的元素是否可見。當我執行下面的JavaScript正常工作:JavaScript的可見性檢查不起作用

var element = shape_7; 

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

但是,如果我執行下面的JavaScript它工作:

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

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

不幸的是,我還需要第二次的情況下(如數量可變)在我的情況。如何糾正第二個代碼才能正常工作?

非常感謝您的幫助!

+0

您的jQuery調用正在尋找DOM中的''。如果你想找到一個** id **「shape_7」的元素,你需要'「#shape_7」'。否則,你的兩段代碼將做同樣的事情。 – Pointy

+2

看起來'shape_7'是另一個變量。那來自哪裏?您將元素定義爲等於另一個變量,而第二個元素選擇器則是元素選擇器。第二個是在頁面中尋找一個''元素。 – forrestmid

+1

在https://jsfiddle.net發佈您的代碼,以便我們可以重現它。 –

回答

1

可以訪問window對象上的shape_*變量,如果它是全局定義的,所以你可以做類似window['shape_' + counter]

再次您可以 ...但你真的不應該這樣編碼。相反,你應該嘗試創建與值的數組: 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

歡迎您:)祝您有美好的一天 –