使用JavaScript进行可见性检查并不起作用

时间:2017-02-09 00:43:23

标签: javascript jquery variables if-statement visibility

我想检查一个名为" shape_7"的元素。是可见的。当我执行以下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
}

不幸的是,在我的情况下我需要第二种情况(数字作为变量)。为了正常工作,如何纠正第二个代码?

非常感谢您提前寻求帮助!

2 个答案:

答案 0 :(得分:1)

如果shape_*对象是全局定义的,那么访问window个变量,因此您可以执行window['shape_' + counter]之类的操作。

再次,你可以 ......但你真的不应该这样编码。相反,您应该尝试使用以下值创建数组: var shapes = ['#first', '#second', '#third'];

然后您可以按索引访问值:$(shapes[0]);

<强>记住

window对象上设置属性使它们成为全局属性,这意味着所有代码都可以获取并设置这些属性值。因此,考虑到不好的做法,你应该尽量避免它。 Look into IIFE's

答案 1 :(得分: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 }