2016-04-07 8 views
2

私は、サーバーからデータを取得する4つのボタンを持っています。 4つのボタンの1つをクリックすると、正しい値が得られますが、4つのhtmlスパンをすべて満たす問題があります。たとえば、button1をクリックすると、button1の結果が4つのボタンのすべてのスパンに表示されます。私がbutton2をクリックすると、button2から結果が得られますが、4つのスパンでも結果が得られます。JavaScript getElemendById()。innerHTML = data.body.resultそれ自体を繰り返す...どのように修正するのですか?

4つの異なるバージョンのコードを試しましたが、4つすべてで少し異なる結果が得られます。ここで

はHTMLです:

function variableGet(variableName){ 
    var vrGr = particle.getVariable({ deviceId: ActualDeviceID, name: variableName, auth: token }); 

    vrGr.then(
     function(data) { 
     document.getElementById("r1").innerHTML = data.body.result; 
     } 
    ); 
    } 

<html> 
    <head> 
    <title>Particle Javascript Example</title> 

    <script type="text/javascript" src="http://cdn.jsdelivr.net/particle-api-js/5/particle.min.js"></script> 
    </head> 

    <body> 
    <br> 
    <span id="r1"></span> 
    <button type="button" onclick="variableGet('getRelay1')">Relay1</button><br> 
    <span id="r2"></span> 
    <button type="button" onclick="variableGet('getRelay2')">Relay2</button><br> 
    <span id="r3"></span> 
    <button type="button" onclick="variableGet('getRelay3')">Relay3</button><br> 
    <span id="r4"></span> 
    <button type="button" onclick="variableGet('getRelay4')">Relay3</button><br> 

そして、ここでは、私はこのコードは、常に私の最初の行にデータを提供します

を試してみた異なるバージョンです

このコードは4つの行すべてをクリックするボタンの情報を私に与えますが、やはり常に同じテキストです。

function variableGet(variableName){ 
    var vrGr = particle.getVariable({ deviceId: ActualDeviceID, name: variableName, auth: token }); 

    vrGr.then(
     function(data) { 
     document.getElementById("r1").innerHTML = data.body.result; 
     document.getElementById("r2").innerHTML = data.body.result; 
     document.getElementById("r3").innerHTML = data.body.result; 
     document.getElementById("r4").innerHTML = data.body.result; 
     } 
    ); 
    } 

私もこれを試してみましたが、私は最初のバージョンになったように私は、私は同じ適切なデータを取得するが、唯一のこれまでの最初の行に乗る:

function variableGet(variableName){ 
    var vrGr = particle.getVariable({ deviceId: ActualDeviceID, name: variableName, auth: token }); 

    vrGr.then(
     function(data) { 
     document.getElementById("r1").innerHTML = data.body.result 
     }, 
     function(data) { 
     document.getElementById("r2").innerHTML = data.body.result 
     }, 
     function(data) { 
     document.getElementById("r3").innerHTML = data.body.result 
     }, 
     function(data) { 
     document.getElementById("r4").innerHTML = data.body.result 
     } 
    ); 

そして最後に、私は再び、私は適切なデータを得るが、常に同じライン上に、同様にこれを試してみました:

function variableGet(variableName){ 
     requestURL = "https://api.particle.io/v1/devices/" + ActualDeviceID + "/" + variableGet + "/?access_token=" + token; 
     var vrGr = particle.getVariable({ deviceId: ActualDeviceID, name: variableName, auth: token }); 

    vrGr.then(
     function(requestURL) { 
     document.getElementById("r1").innerHTML = requestURL.body.result 
     }, 
     function(requestURL) { 
     document.getElementById("r2").innerHTML = requestURL.body.result 
     }, 
     function(requestURL) { 
     document.getElementById("r3").innerHTML = requestURL.body.result 
     }, 
     function(requestURL) { 
     document.getElementById("r4").innerHTML = requestURL.body.result 
     } 
    ); 
    } 
+1

は結果に対して1つの以上のパラメータを追加することが容易になります: 'variableGet( 'getRelay1'、 'R1')'。 – skobaljic

答えて

2

として、

<html> 
    <head> 
    <title>Particle Javascript Example</title> 

    <script type="text/javascript" src="http://cdn.jsdelivr.net/particle-api-js/5/particle.min.js"></script> 
    </head> 

    <body> 
    <br> 
    <span id="r1"></span> 
    <button type="button" onclick="variableGet('getRelay1', 'r1')">Relay1</button><br> 
    <span id="r2"></span> 
    <button type="button" onclick="variableGet('getRelay2', 'r2')">Relay2</button><br> 
    <span id="r3"></span> 
    <button type="button" onclick="variableGet('getRelay3', 'r3')">Relay3</button><br> 
    <span id="r4"></span> 
    <button type="button" onclick="variableGet('getRelay4', 'r4')">Relay3</button><br> 

そして、あなたの関数は次のようになります。:

function variableGet(variableName, r){ 
    var vrGr = particle.getVariable({ deviceId: ActualDeviceID, name: variableName, auth: token }); 

    vrGr.then(
     function(data) { 
     document.getElementById(r).innerHTML = data.body.result; 
     } 
    ); 
} 

はそれがあなたのために働くならば、私たちは知ってみましょう。skobaljicは、あなたがそうのようなのonclickに2つ目のパラメータを追加することができます示唆しました

+0

これは完璧に機能しました!ありがとうございました! – dustinjb

1

variableNameに既に番号があるので、正しいスパンIDを作成することもできます。

プリティクイックフィックス:

function variableGet(variableName){ 
    var vrGr = particle.getVariable({ deviceId: ActualDeviceID, name: variableName, auth: token }); 
    var spanId = "r" + variableName.slice(-1); 
    vrGr.then(
     function(data) { 
     document.getElementById(spanId).innerHTML = data.body.result; 
     } 
    ); 
} 
関連する問題