Iteration über TR in einem Tisch mit Cheerio.jsJquery

JQuery-Programmierung
Anonymous
 Iteration über TR in einem Tisch mit Cheerio.js

Post by Anonymous »

Ich habe Probleme mit den Selektoren, die für Cheerio.js verfügbar sind, die ich auf meinem Knotenserver verwende. Der Kern basiert angeblich auf JQuery, aber ich kann es mit der gleichen Auswahl, die ich mit nativem JQuery tun würde, nicht wirklich zum Laufen bringen.

Code: Select all


few cells here

These are the rows I want


< /code>
Da es auf der Seite zwei Tabellen mit der Klasse "Listing" gibt, kann ich das nicht direkt auswählen, daher brauche ich die Referenz auf die DIV mit der Klasse "Test". Die Auswahl, die ich mit JQuery ausführen kann, wäre so etwas wie: < /p>
$('div.test tbody tr')
< /code>
Aber das funktioniert nicht mit Cheerio. Wenn ich $ ('div [class = "test"] tr') ausführe, bekomme ich alle Zeilen auf die Tabelle, sogar die Thead -Zeilen, also funktioniert das für mich nicht.// Load the html
var $ = cheerio.load(html, {
normalizeWhitespace: true
});

$('div.tillgodo tbody tr').each(function(){
console.log("Found credited course...");
var children = $(this).children();
var credits = parseFloat($(children[3]).text().replace(',', '.')); // We need to replace comma with a dot since parseFloats only supports dots by design

var row = {
"course" : $(children[1]).text().trim(),
"grade" : null,
"credits" : credits,
"date" : $(children[4]).text()
};

// Push course to JSON object
console.log("Push course to object...");
console.log("------------------------------------------\n");
data.credited_courses.push(row);
data.credited_courses_credits += parseFloat(credits);
});
Der folgende Code funktioniert für die erste Tabelle:

Code: Select all

$('tr.incomplete.course').each(function(i, tr){
console.log("This is course nr: " + parseInt(course_count+1));
console.log("Found incompleted course...");
var children = $(this).children();
var credits = parseFloat($(children[2]).text().replace(',', '.').match(/(\+|-)?((\d+(\.\d+)?)|(\.\d+))/)[0]); // Filter out any parentheses and odd characters
var row = {
"course" : $(children[1]).text(),
"grade" : $(children[3]).text(),
"credits" : credits,
"date" : $(children[5]).text()
};

// Sum the total amount of credits for all courses
console.log("Add credits to incompleted_credits...");
data.incompleted_credits += credits;

console.log("Push course to object...");
data.incompleted_courses.push(row);
course_count++;
});
< /code>
Wenn ich sage, dass es nicht funktioniert, bedeutet das, dass das von mir zurückgegebene JSON -Objekt nicht die erwarteten Zeilen aus der zweiten Tabelle enthält.
Tillgodoräknanden



Kurskod
Kursnamn
Beslutsfattare
Poäng
Datum





Summa tillgodoräknade poäng:
10,5






Valfria kurser
xxx
10,5
2013-06-03





Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post