JSFiddle - React, Tailwind, and code Playground

by Cameron Bernhardt

JavaScript

var originScript = document.createElement("script");
originScript.setAttribute("type", "text/javascript");
originScript.src = "http://whateverorigin.org/get?url=" + encodeURIComponent('http://stackoverflow.com/election') + "&callback=dataLoaded";
document.body.appendChild(originScript);

function dataLoaded(data) {
    if (data.status.http_code === 200) {
        var candidates = [];
        var parser = new DOMParser();
        var doc = parser.parseFromString(data.contents, "text/html");
        var posts = doc.getElementsByTagName("table")[0].children[0].children;
        for (var i = 0; i < posts.length; i++) {
            var post = posts[i];
            var candidateInfo = post.children[1].children[0].children[1].children[0].children[0].children[1].children[0].children[3].children[0];
            var candidateName = candidateInfo.textContent;
            var candidateLink = "http://stackoverflow.com" + candidateInfo.href;
            var score = post.children[0].children[0].children[0].children[2].textContent;
            var user = {
                "name": candidateName,
                    "link": candidateLink,
                    "score": score
            };
            candidates.push(user);
        }
        formatData(candidates);
    }
}
var callScript = document.createElement("script");
callScript.setAttribute("type", "text/javascript");
callScript.textContent = dataLoaded.toString();
document.body.appendChild(callScript);

function formatData(data) {
    var sortedData = data.sort(function (a, b) {
        return b["score"] - a["score"]
    });
    for (var i = 0; i < sortedData.length; i++) {
        document.body.innerHTML += "<p>" + (i + 1) + ". " + sortedData[i]["name"] + " (<a href='" + sortedData[i]["link"] + "'>Profile</a>): " + sortedData[i]["score"] + "</p>";
    }
}