2017-02-09 54 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

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