2017-02-04 3 views
0

Ich habe zwei berechnete Werte in einem Textbereich in Spotfire. Ich möchte jQuery benutzen, um die Farbe des Textbereichhintergrundes zu ändern, der auf basiert, wenn ein Wert höher als der andere ist. Ich habe es eingerichtet, aber es funktioniert nicht. Es scheint, als würde es nicht einmal ausgeführt. Hier ist der HTML-Code.Verwenden Sie jQuery zum Ändern der Hintergrundfarbe des Textbereichs Spotfire

<body id = wrapper> 
<SPAN id = thisyear><SpotfireControl id="2f97a6afc3e64512977dd042a7e32351"  /></SPAN> 

<SPAN id = lastyear ><SpotfireControl id="f98415c74eb34cedbab057f763788bc6" /></SPAN> 
</body> 

Der oben berechnete Wert (in id thisyear) den Wert 77750 und der Boden berechnete Wert (in id lastyear) 44086

Die Idee ist, dass, wenn die Filter, um die Werte zu ändern hat ich den Hintergrund will Farbe zu ändern. Hier ist die jQuery, die derzeit nicht funktioniert:

$("#thisyear").change(function() { 
    var thisyearval = ParseInt($("#thisyear").val()); 
    var lastyearval = ParseInt($("#lastyear").val()); 
    if (thisyearval > lastyearval){ 
     $("#wrapper").css("background-color", "#009900") 
     } else{$("#wrapper").css("background-color", "#FF0000")} 
}); 

Ich bin neu in jQuery so ist jede Hilfe sehr dankbar!

+2

Ich bin mit Spotfire nicht vertraut, aber die '.change()' und '.val()' Methoden, die Sie verwenden, sind normalerweise mit 'input' Elementen verbunden. Ich würde mir nicht vorstellen, sie an '' Anhängen zu befestigen, würde irgendetwas tun. Wenn Spotfire ein einzelnes Eingabefeld generiert, versuchen Sie, stattdessen auf diese zu verweisen, z. B. $ ('# thisyear input') '. –

Antwort

1

Ich endete diese herauszufinden. Hier ist die html:

<body > 
<div id = wrapper> 
<div id = thisyear><SpotfireControl id="d644de4c97c440fbb78c561f190e5a47" /> </div> 

<div id = lastyear ><SpotfireControl id="f98415c74eb34cedbab057f763788bc6" /></div> 
</div> 
</body> 

Und die jQuery, die dies getan wird:

setInterval(function() { 
    var thisyearval = parseInt($("#thisyear").text(),10) 
    var lastyearval = parseInt($("#lastyear").text(),10) 


    if (thisyearval > lastyearval){ 
     $("#wrapper").css("background-color", "#009900") 
    } else{$("#wrapper").css("background-color", "#FF0000")} 
}, 500); 

Es stellt sich, dass die Spotfire heraus muß nicht die Änderungsfunktion in jQuery unterstützen, so habe ich setInterval(), um im wesentlichen nennen Funktion immer und immer wieder.

Hoffentlich hilft dies jemand anderen auch.

+2

sei vorsichtig mit 'setInterval()', da es in Spotfire nicht gut unterstützt wird. 'setInterval()' kann mehrere Male ausgeführt werden, was zu Race Conditions und ungeradem Verhalten in Ihrer Analyse führt. Ich habe das noch nicht versucht, aber Sie können 'clearInterval()' verwenden, um die Timer bei der Seitennavigation zu bereinigen. für Tipps, siehe http://www.w3schools.com/jsref/met_win_setinterval.asp – niko

+0

danke für den Tipp, ich werde es untersuchen. –

Verwandte Themen