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

Вы может доступ ваши shape_* переменных на window объекте, если он определен в глобальном масштабе, так что вы могли бы сделать что-то вроде 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

добро пожаловать :) хорошо провести день –