Ist es möglich, die Counter-Inkrement-Nummer bei jeder Generierung einer neuen Betreffzeile dynamisch zu ändern (siehe unten)?Counter-Increment funktioniert nicht dynamisch?
Die Zählerinkrementierungsnummer ändert sich nicht, wenn eine neue Betreffzeile dynamisch generiert wird?
Wenn eine neue Geige bitte zur Verfügung gestellt werden könnte, wäre es sehr geschätzt, wie ich Codierung noch neu bin.
Vielen Dank!
HTML:
<button class="button" data-bind="click: addClass">Add a New Class</button>
<button class="button">
Apply
</button>
<hr>
<ul align="center" data-bind="foreach: classes">
<li>
<label class="number">Subject:</label><input type="text" data-bind="value: title" placeholder="E.g: English"/>
<select disabled data-bind="value: credits">
<option selected data-bind="value: credits">1</option>
</select>
<label>Grade:</label>
<input type="text" data-bind="value: letterGrade" placeholder="E.g: A+"/>
<br>
<br>
</li>
</ul>
<hr />
<br>
<h4>
Your GPA is: <b><span data-bind="text: totalGPA"></span></b>
</h4>
<br>
<h4>
Final Grade: <span data-bind="text: totalGrade"></span>
</h4>
CSS:
@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,700);
@import url(http://fonts.googleapis.com/css?family=Inconsolata:400);
* { text-rendering: optimizelegibility;}
body, input, textarea, select, button { font-family: 'Open Sans', sans-serif; }
pre { font-family: 'Inconsolata', monospace; }
span {font-size: 18px;}
h1 {font-size: 25px;}
.number {
counter-reset: subsection;
}
.number:after {
counter-increment: section;
content: " " counter(section) ". ";
}
JQuery:
var gradeMapping = {
'A+': 15,
'A': 14,
'A-': 13,
'B+': 12,
'B': 11,
'B-': 10,
'C+': 9,
'C': 8,
'C-': 7,
'D+': 6,
'D': 5,
'D-': 4,
'E+': 3,
'E': 2,
'E-': 1
}
function Class(title, credits, letterGrade) {
var self = this;
self.title = ko.observable(title);
self.credits = ko.observable(credits);
self.letterGrade = ko.observable(letterGrade);
self.gpa = ko.computed(function() {
return gradeMapping[self.letterGrade()];
});
}
function GpaCalcViewModel() {
var self = this;
self.classes = ko.observableArray();
self.totalGPA = ko.computed(function() {
var totalWeightedGPA = 0,
totalCredits = 0;
$.each(self.classes(), function() {
totalWeightedGPA += (this.gpa() * this.credits());
totalCredits += (this.credits() * 1);
})
return totalWeightedGPA/totalCredits;
});
self.totalGrade = ko.computed(function() {
var totalWeightedGPA = 0,
totalCredits = 0;
var gradeLetter = null;
$.each(self.classes(), function() {
totalWeightedGPA += (this.gpa() * this.credits());
totalCredits += (this.credits() * 1);
});
$.each(gradeMapping, function(letter, number) {
if(number == Math.round(totalWeightedGPA/totalCredits)){
gradeLetter = letter;
}
})
return gradeLetter;
});
self.addClass = function() {
self.classes.push(new Class());
}
};
var viewModel = new GpaCalcViewModel();
ko.applyBindings(viewModel);
Bitte versuchen Sie den Code an die * minimal * erforderlich Repro zu trimmen. Es gibt eine Menge Dinge in deinem Code, die anscheinend nicht mit dem Problem zusammenhängen, aber es gibt auch Bits, die ich vermisse (z. B. den Ansichtscode für die Nummer). Überprüfen Sie "[mcve]" als Anleitung. – Jeroen