Javascript 如何更改DOM元素的样式

Javascript 如何更改DOM元素的样式,javascript,Javascript,有这样一个简单的html: <div id="btc"></div> 和一些.js代码,如下所示: setInterval(function () { var HttpClient = function () { this.get = function (aUrl, aCallback) { var anHttpRequest = new XMLHttpRequest(); anHttpReques

有这样一个简单的html:

<div id="btc"></div>
和一些.js代码,如下所示:

setInterval(function () {
    var HttpClient = function () {
        this.get = function (aUrl, aCallback) {
            var anHttpRequest = new XMLHttpRequest();
            anHttpRequest.onreadystatechange = function () {
                if (anHttpRequest.readyState == 4 && anHttpRequest.status == 200)
                    aCallback(anHttpRequest.responseText);
            }

            anHttpRequest.open("GET", aUrl, true);
            anHttpRequest.send(null);
        }
    }
    var price = 1;
    var client = new HttpClient();
    client.get('https://blockchain.info/ru/ticker', function (response) {
        var fields = ['last'];
        var data = JSON.parse(response);
        var out = [];
        for (var i in data) {
            var d = [];
            for (var j in fields)
                d.push(data[i][fields[j]]);
            out.push(d);
        }
        console.log(out[0]);
        if (out[0] > price) {
            console.log('more');
            document.getElementById('btc').innerHTML = out[0];
            document.getElementById('btc').style.color = "green";
        }
        price = out[0];
        if (out[0] < price) {
            console.log('less');
            price = out[0];
            document.getElementById('btc').innerHTML = out[0];
            document.getElementById('btc').style.color = "red";
        }

    });
}, 1000)
这个想法是用红色或绿色标记价格,以防价格下跌或上涨。 到目前为止,它只适用于上升秒,如果从来没有工作。 我做错了什么,如何纠正

您正在使用代码

price = out[0];
if (out[0] < price) {
您应该删除行price=out[0];在setInterval函数之前移动var price=1

下面是正确的代码:

    var price = 1;
    setInterval(function () {
        var HttpClient = function () {
            this.get = function (aUrl, aCallback) {
                var anHttpRequest = new XMLHttpRequest();
                anHttpRequest.onreadystatechange = function () {
                    if (anHttpRequest.readyState == 4 && anHttpRequest.status == 200)
                        aCallback(anHttpRequest.responseText);
                }

                anHttpRequest.open("GET", aUrl, true);
                anHttpRequest.send(null);
            }
        }

        var client = new HttpClient();
        client.get('https://blockchain.info/ru/ticker', function (response) {
            var fields = ['last'];
            var data = JSON.parse(response);
            var out = [];
            for (var i in data) {
                var d = [];
                for (var j in fields)
                    d.push(data[i][fields[j]]);
                out.push(d);
            }
            console.log(price)
            if (out[0] > price) {
                console.log('more');
                price = out[0];
                document.getElementById('btc').innerHTML = out[0];
                document.getElementById('btc').style.color = "green";
            }
            else if (out[0] < price) {
                console.log('less');
                price = out[0];
                document.getElementById('btc').innerHTML = out[0];
                document.getElementById('btc').style.color = "red";
            }
        });
    }, 1000);

为什么不使用其他工具?@NoushadPP因为我需要以某种方式重新声明价格变量,我不知道如何;问题是,正如我猜的那样,var price=1意味着我需要在已经进行的过程中重新分配一些值……如果您有price=out[0];在if out[0]之前 var price = 1; setInterval(function () { var HttpClient = function () { this.get = function (aUrl, aCallback) { var anHttpRequest = new XMLHttpRequest(); anHttpRequest.onreadystatechange = function () { if (anHttpRequest.readyState == 4 && anHttpRequest.status == 200) aCallback(anHttpRequest.responseText); } anHttpRequest.open("GET", aUrl, true); anHttpRequest.send(null); } } var client = new HttpClient(); client.get('https://blockchain.info/ru/ticker', function (response) { var fields = ['last']; var data = JSON.parse(response); var out = []; for (var i in data) { var d = []; for (var j in fields) d.push(data[i][fields[j]]); out.push(d); } console.log(price) if (out[0] > price) { console.log('more'); price = out[0]; document.getElementById('btc').innerHTML = out[0]; document.getElementById('btc').style.color = "green"; } else if (out[0] < price) { console.log('less'); price = out[0]; document.getElementById('btc').innerHTML = out[0]; document.getElementById('btc').style.color = "red"; } }); }, 1000);