2016-07-11 7 views
0

Ich baue eine Portfolio-Website. Der Benutzer kann mit der linken und rechten Pfeiltaste durch meine Arbeit klicken. Die Pfeile links und rechts setzen die Variable x auf 1,2 oder 3 und senden sie über eine Funktion "workSelection". Wenn der Benutzer durch die Arbeit klickt, möchte ich den Arbeitstitel aktualisieren, damit er mit der Variablen der ausgewählten Arbeit übereinstimmt (1,2 oder 3).Wie setze ich ein Element auf den Wert einer Variablen mit Jquery

var workTitle1 = "Work 1"; 
var workTitle2 = "Work 2"; 
var workTitle3 = "Work 3"; 

function workSelection(x) 
{ 
     var loop = 1; 
     while (loop < 4) 
     { 
      if (x == loop) 
      { 
       $("#workTitle").html('workTitle'+loop); 
      } 
      loop++; 
     } 
} 

Wie kann ich ändern $ ("# workTitle") html ('workTitle' + Schleife). um den Wert von workTitle1, workTitle2, workTitle3 anzuzeigen. Stattdessen wird jetzt nur eine Zeichenfolge mit dem Wert "workTitle1" usw. angezeigt, nicht der Wert der Variablen selbst.

Danke für jede Hilfe!

+0

Es gibt viele Werte in der Schleife. Ich habe das für die Frage verkürzt, damit Sie meinen Standpunkt verstehen. Die Schleife ruft die Werte von ungefähr 7 verschiedenen Elementen auf. –

Antwort

3

Sie window['workTitle'+ loop]

verwenden können
var workTitle1 = "Work 1"; 
var workTitle2 = "Work 2"; 
var workTitle3 = "Work 3"; 

function workSelection(x) 
{ 
    $("#workTitle").html(window['workTitle'+ x]); 
} 

EDIT: Es gibt keine Notwendigkeit, eine Schleife ist, antwortete ich nur die Frage, wie $("#workTitle").html('workTitle'+loop) ändern Sie den Wert von workTitle1 :)

+0

Was ist der Punkt der 'while' Schleife, um ein Element daraus zu bekommen? –

+0

Fenster ['WorkTitle' + Schleife] funktionierte perfekt. Vielen Dank! Ich habe meinen Code in dem Beispiel minimiert, das ich Ihnen gezeigt habe. Der echte Code ist größer und die Schleife ist notwendig. Danke allen! –

0

einfachere Methode

var workTitle = []; 
workTitle[0] = "Work 1"; 
workTitle[1] = "Work 2"; 
workTitle[2] = "Work 3"; 

function workSelection(x) 
{ 
     var loop = 0; 
     while (loop < 3) 
     { 
      if (x == loop) 
      { 
       $("#workTitle").html(workTitle[loop]); 
      } 
      loop++; 
     } 
} 
+0

Beachten Sie, dass 'x' anscheinend 1-basiert war, aber Sie verwenden es gegen einen 0-basierten 'loop'-Wert. –

+0

Korrigiert den ersten Fehler. Und Logik kann improvisiert werden, denke ich. – kawadhiya21

+2

Schleife ist im obigen Szenario völlig nutzlos, Warum nicht einfach '$ (" # workTitle "). Html (workTitle [x -1]);' – Satpal

0

Dies ist, wo Sie eine Array wollen anstatt einzelne Variablen. Während es mit JavaScript möglich ist, einzelne Variablen zu verwenden (mit eval, die Sie vermeiden sollten, oder indem Sie sie globals machen und die Tatsache verwenden, dass sie Eigenschaften von window werden), gibt es keinen guten Grund dazu.

Hier ist die Array-Version. Beachten Sie, dass Indizes bei 0 beginnen:

var workTitles = [ 
    "Work 1", 
    "Work 2", 
    "Work 3" 
]; 
function workSelection(x) { 
    for (var loop = 0; loop < workTitles.length; ++loop) { 
     if (x == loop + 1) { // Note the comparison, since `x` appears to be 1-based 
      $("#workTitle").html(workTitles[loop]); 
     } 
     loop++; 
    } 
} 

Ich sehe keine Notwendigkeit, dass die Schleife, aber:

var workTitles = [ 
    "Work 1", 
    "Work 2", 
    "Work 3" 
]; 

function workSelection(x) 
{ 
    $("#workTitle").html(workTitles[x - 1]); 
} 
+1

Ich weiß nicht, warum das -1, es ist die beste Antwort. Es besteht keine Notwendigkeit für eine Schleife. – Guillaume

+0

@Guillaume: Nun, ich habe gerade nicht einen, nicht zwei, sondern * drei * Bearbeitungsfehler gefunden, die ich gemacht habe. :-) (Jetzt behoben.) Also fair genug. –

0

ein Array verwenden

var workTitles = ["Work 1","Work 2","Work 3"]; 

function workSelection(x) 
{ 
    $("#workTitle").html(workTitles[x]); 


} 
+1

Was ist der Sinn der while-Schleife, um ein Element daraus zu machen? –

+0

Ich stelle mir die gleiche Frage. Aber das wollte er. – Roysh

+0

Er sagte nie, dass er die Schleife wollte, nur um den richtigen Wert zu bekommen. –

1

Ihre Logik ist komplizierter angezeigt werden, als es sein muss. Wenn Sie die mehreren Strings so ändern, dass alle in einem Array gespeichert werden, können Sie sie direkt nach Index abrufen, anstatt sie alle zu durchlaufen. Versuchen Sie Folgendes:

var workTitles = [ "Work 1", "Work 2", "Work 3" ]; 

function workSelection(x) { 
    $("#workTitle").html(workTitles[x-1]); 
} 
Verwandte Themen