2016-05-12 4 views
-1

Ich habe eine Farbauswahl und beim Ziehen ruft es die Funktion hello(e,2) kontinuierlich. Ich übergebe die zweite Variable 2, so dass die erste if statement nicht ausgeführt wird. Jetzt möchte ich das nicht ändern.Holen Sie sich den letzten Wert einer Schleife und Stop-Funktion ausführen

list[2] =list[1]; 
list[1]=list[0]; 
list[0]=e; 

Dies sollte nur die letzte Zeit ausgeführt werden. Damit bewegen sich die Orte nur einmal. Ich hoffe du verstehst mein Problem. Das ist meine Funktion.

function hello(e, a) { 
    if (a == 1 && e != list[0] && e != list[1]) { 
     list[2] = list[1]; 
     list[1] = list[0]; 
     list[0] = e; 

     var strContent = ""; 
     for (var i = 0; i <= 2; i++) { 
      strContent += "<div class=\"pick\" style=\"background-color:" + list[i] + "\" onclick=\"hello(this.style.backgroundColor,0);\"></div>"; 
     } 
    } 
    if (a == 2 && e != list[0] && e != list[1]) { 
     list[0] = e; 

     var strContent = ""; 
     for (var i = 0; i <= 2; i++) { 
      strContent += "<div class=\"pick\" style=\"background-color:" + list[i] + "\" onclick=\"hello(this.style.backgroundColor,0);\"></div>"; 
     } 
    } 

    $('#colorpick').html(strContent); 

    //clr = 'rgb('+r+','+g+','+b+')'; 
    clr = e; 
    var rgb = clr.replace(/^(rgb|rgba)\(/, '').replace(/\)$/, '').replace(/\s/g, '').split(','); 
    myColor.r = parseInt(rgb[0]); 
    myColor.g = parseInt(rgb[1]); 
    myColor.b = parseInt(rgb[2]); 
    curColor = myColor; 

    document.getElementById('color-lib-1').style.display = "none"; 
    document.getElementById('color-lib-2').style.display = "none"; 
    document.getElementById('color-lib-3').style.display = "none"; 
    document.getElementById('color-lib-4').style.display = "none"; 

} 
+0

Dies ist nicht lesbar. Bitte füge deinen Code richtig ein. – Tomalak

+1

_Ich hoffe, Sie verstehen mein Problem._ Ich lese es dreimal, kann aber nicht. – Satpal

+0

Sie sagen also, dass Sie "2" nicht als Wert von "a" übergeben wollen, wenn Sie es das letzte Mal anrufen? Ich denke, das liegt außerhalb der Kontrolle der Funktion, die Sie uns gezeigt haben. Die Funktion selbst weiß nicht, ob dies das erste Mal ist, dass Sie es aufgerufen haben oder das Millionste. – ADyson

Antwort

0

Es ist wirklich schwer zu erraten, was Sie versuchen, es zu tun, vor allem, weil ich sicher bin, es in einer besseren Art und Weise hätte getan werden können.

function hello(e) { 
    if(e === list[0] && e === list[1]){ 
     return false; 
    }else{ 
     list.unshift(e); 
    } 

    var strContent = ""; 
    for (var i = 0; i <= 2; i++) { 
     strContent += "<div class=\"pick\" style=\"background-color:" + list[i] + "\" onclick=\"hello(this.style.backgroundColor,0);\"></div>"; 
    } 

    //followed by whatever code 
} 

Es scheint sauberer und sollte Ihren Zweck erfüllen. Obwohl nicht sicher !!

Verwandte Themen