2017-02-09 2 views
0

Ich möchte überprüfen, ob ein Element mit dem Namen "Shape_7" sichtbar ist. Wenn ich die folgende JavaScript ausführen es funktioniert gut:Sichtprüfung mit JavaScript funktioniert nicht

var element = shape_7; 

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

Allerdings, wenn ich die folgende JavaScript ausführen es nicht Arbeit:

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

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

Leider habe ich den zweiten Fall benötigen (Anzahl als Variable) in meiner Situation. Wie muss der zweite Code korrigiert werden, damit er richtig funktioniert?

Vielen Dank im Voraus für jede Hilfe!

+0

Ihre jQuery-Aufrufe suchen im DOM nach ''. Wenn du ein Element mit der ** ID ** "shape_7" finden willst, willst du '" # shape_7 "'. Sonst machen deine zwei Code-Stücke genau dasselbe. – Pointy

+2

Es scheint, dass 'shape_7' eine andere Variable ist. Woher kommt das? Sie definieren Element als gleich zu einer anderen Variablen in der ersten, während es eine Elementauswahl-Zeichenfolge in der zweiten ist. Die zweite sucht nach einem '' Element in Ihrer Seite. – forrestmid

+1

poste deinen Code in https://jsfiddle.net, damit wir ihn reproduzieren können. –

Antwort

1

Sie können Zugriff auf Ihre shape_* Variablen auf dem window Objekt, wenn es global definiert, so dass Sie so etwas wie window['shape_' + counter] tun könnte.

Wieder Sie können ... Aber Sie sollten wirklich nicht so codieren. Stattdessen sollten Sie mit den Werten ein Array versuchen zu schaffen: var shapes = ['#first', '#second', '#third'];

Dann können Sie die Werte von Index zugreifen: $(shapes[0]);

Festlegen von Eigenschaften auf den window Objekte REMEMBER macht sie global, was bedeutet, Der gesamte Code kann diese Eigenschaftswerte abrufen und festlegen. Es ist daher eine schlechte Übung, und Sie sollten versuchen, es zu vermeiden. Look into IIFE's

+0

Perfekt! Vielen Dank für die Antwort! Es funktioniert jetzt perfekt! – Tall83

+0

Und danke für die zusätzliche Erklärung! Ich werde daran denken! – 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

Vielen Dank! – Tall83

+0

Sie sind herzlich willkommen :) einen schönen Tag haben –