2016-04-18 4 views
0

Ich habe einen Hochschulauftrag, wo ich einen Würfelroller programmieren soll.JavaScript: Mehrere Würfelrollen mit jeweils eigenen Würfelwürfeln gerollt

Sie können Würfel von der Walze hinzufügen und abziehen. Wenn Sie den Knopf drücken, um einen Würfel hinzuzufügen, wird ein d6 mit einer zufälligen Anzahl von Punkten (1 bis 6) erstellt. Sie können der Walze bis zu 40 Würfel hinzufügen.

Der Würfelroller zeigt die Summe der gewürfelten Würfel. Mein Problem ist, dass, wenn ich mehrere Rollen öffne, anstatt dass der Zähler auf Null steht, die Summe der Würfel in der ersten Rolle kopiert wird. Wenn ich der neuen Walze mehr Würfel hinzufüge, werden diese zur Summe der ersten Walze anstelle der neuen Walze addiert. Mit anderen Worten:

Dice Walze 1 zeigt die Summe der Würfelrolle 1,2,3,4 ...

Dice Walze 2 zeigt nur die erste Summe von Würfelrolle 1, und dann nicht aktualisiert .

Wie kann ich dies verhindern? Ich möchte, dass jede Rolle nur die Summe ihrer eigenen Würfel zeigt. Mit anderen Worten:

in Würfelrolle 1, mag ich nur die Summe der Würfel in Walze 1

in Würfel Walze 2, um zu zeigen, ich will nur die Summe des Würfels 2 in Rolle zeigen.

Hier ist der Code für einen Würfel mit einem Punkt.

// dice-side-one li 
var diceSideOne = document.createElement("li"); 
diceSideOne.className = "dice dice-side-one"; 
diceSideOne.setAttribute('data-diceValue', '1'); 

Hier ist der Code, um die Summe der Würfel zu berechnen.

function getSumDiceValue(){ 
    var dice = document.getElementsByClassName("dice");     
    var diceTotal = 0;             
    for(var i = 0; i < dice.length; i++){        
     diceTotal += Number(dice[i].getAttribute("data-diceValue"));  
    };        
    return diceTotal; 
}; 

Hier ist der Code, um die Summe der Würfel zu zeigen.

// Dice summ li 
var totalDiceSumm = document.createElement("p"); 
totalDiceSumm.className = "dice-summ"; 
totalDiceSumm.innerHTML = getSumDiceValue(); 

diceToolbarCounterWrapper.appendChild(totalDiceSumm); 

(Ich habe gerade realisiert Summe nur mit einem ‚m‘ geschrieben wird)

+0

lese ich Ihre Frage, und ich glaube, es gibt nicht genug Informationen, nur ist es zu beantworten. Sie stellen kein HTML zur Verfügung, ich glaube nicht, dass Sie das volle Javascript zur Verfügung gestellt haben. IMO Ihre beste Wette, um eine Antwort zu erhalten, ist eine funktionierende jsfiddle – TKoL

+0

Hier ist eine Geige mit dem Problem https://jsfiddle.net/txdq7upw/1/ –

+0

seine diese Zeile 'document.getElementsByClassName ('Würfel-Summ') [ 0] .innerHTML = getSumDiceValue() 'das ist das Problem. Du bekommst alle Elemente mit 'dice-summ'-Klassennamen, aber dann nimmst du das erste Element gezielt auf und aktualisierst nur – Craicerjack

Antwort

1

Nach einem Blick auf Ihrer Geige. Sie müssen herausfinden, welche Taste Add Dice angeklickt wird. Dann können Sie herausfinden, welche Summierung als nächstes Element aktualisiert werden soll. Sie können mit dieser Linie tun:

this.nextSibling.innerHTML = getSumDiceValue(); 

this verweist auf das Element geklickt wird, so this.nextsibling verweist das richtige Element zu aktualisieren.

function insertDice() { 
    var diceSideTwo = document.createElement("div"); 
    diceSideTwo.className = "dice dice-side-two"; 
    diceSideTwo.innerHTML = "2"; 
    diceSideTwo.setAttribute('data-diceValue', '2'); 
    diceWindowWrapper.appendChild(diceSideTwo); 
    this.nextSibling.innerHTML = getSumDiceValue(); //use this instead of line below 
    //document.getElementsByClassName('dice-summ')[1].innerHTML = getSumDiceValue() 
}; 

Sie haben noch das Problem mit Looping durch alle Würfel, wenn zwar die Gesamtsumme aktualisieren.

updated fiddle

+0

Es hat so lange gedauert, um zu antworten.Ich machte eine Geige, die das Problem zeigte. https://jsfiddle.net/txdq7upw/1/ –

+0

Es wird jetzt in der richtigen Rolle aktualisiert, aber leider zählt es immer noch die Summe aller Würfel, wie du gesagt hast. Glauben Sie, dass die Lösung darin besteht, jeder Rolle eine eindeutige ID zu geben? Wenn ja, wie würdest du das machen? –

+0

Ja, du brauchst einen Weg, um zwischen den Würfeln zu unterscheiden, ob das eine ID ist oder ob du mitverfolgst, auf welche Würfel geklickt wird ... das liegt an dir. – Craicerjack

Verwandte Themen