Autor Zpráva
Teodor
Profil
Zdravim,
v JavaScriptu jsem začátečník a potřeboval bych poradit s problémem.
Z PLC automatu si načítám dva stringy 'porucha' a 'ok'; potřebuji změnu barvy z černé na červenou na www stránkách automatu.

našel jsem tu nějaký kód, který jsem se snažil upravit:

</body>
<html>
  <head>
    <title>JavaScript</title>
    <style>
      h1 {color: black;}
    </style>
  </head>
  <body>
    <script>
     function zmena(id) {
      var x = document.getElementById(id);
      x.style.color = "red";
     }
    </script>
    <th>HLADINA:</th><th><i>
    :="Data_block_1".HLADINA:</i></th>
    
  </body>
</html>
bestik_63
Profil
ahoj,
pošli část kódu, do kterého to chceš aplikovat a my ti pomůžeme. Pokud nechápeš jak aplikovat ten příklad co jsi napsal, tak to bude určitě rychlejší :-)
mimochodec
Profil
Teodor:
1. Úvodní </body> tam nemá co dělat.
2. Proč se snažíš použít javascript? Nevím, jakým přesně způsobem tu informaci z PLC promítáš do html, ale myslím, že bez JS se to obejde.
Teodor
Profil
mimochodec:

Jestli to jde bez JS tak tím lépe.
Jde o to, že Siemens má vlastní html tagy, který čte informace ze softwareu v PLC.

takto je zápis:

<table style="float: right;" border="2" style="border-collapse: collapse">

<tr><th>HLADINA OLEJE K-1</th><th><i>
:="Data_block_1".OLEJ_HLADINA_K1:</i></th></tr>

HLADINA OLEJE K-1 je Booleovská operace, která čte string (porucha,ok).
Chtěl jsem JS aby se mi změnila barva z černé(ok) na červenou(porucha)...
juriad
Profil
Teodor:
Takže ten software nahradí na stránce :="Data_block_1".OLEJ_HLADINA_K1: za slovo porucha nebo ok?
Pokud ano, stačilo by použít příslušné třídy pro nastylování v CSS:

<tr class="olej">
  <th>HLADINA OLEJE K-1</th>
  <td class=":="Data_block_1".OLEJ_HLADINA_K1:">:="Data_block_1".OLEJ_HLADINA_K1:</td>
</tr>

Toto by snad mělo způsobit, že na stránce bude buď:
<tr class="olej">
  <th>HLADINA OLEJE K-1</th>
  <td class="ok">ok</td>
</tr>
nebo
<tr class="olej">
  <th>HLADINA OLEJE K-1</th>
  <td class="porucha">porucha</td>
</tr>

Pak kus CSS, který přidáš na stránku jako:
<style>
 /* aplikuje na buňku class="ok" uvnitř řádku class="olej" */
.olej .ok {
 color: green;
}
.olej .porucha {
  color: red;
}
</style>
způsobí obarvení buď zeleně nebo červeně. Pokud bys chtěl, aby se to aplikovalo na všechny ok a všechny poruchy na stránce a nikoli jen na olej, tak jej jednoduše z toho stylu odstaníš.

Ale je možné, že ten program funguje jinak. Je někde online dostupná dokumentace, jak pro to tvořit webové stránky?
Teodor
Profil
juriad:

Díky :)
jj, je pro to příručka na: https://cache.industry.siemens.com

Jedná se o automat Siemens s7-1200 user manual
juriad
Profil
Tak to by mohlo fungovat, tak jak jsem naznačil. Zkusil jsi to?
Pokud by se mu nelíbily ty uvozovky, mohl by sys vytvořit alias (někde poblíž, třeba hned za <tr class="olej">)
<!-- AWP_Out_Variable Name='olej_hladina' Use="Data_block_1".OLEJ_HLADINA_K1' -->
A pak by řádka s buňkou (td) vypadala:
  <td class=":=olej_hladina:">:=olej_hladina:</td>
Což je nejspíš i přehlednější.

Po ostatní: jedná se o system manual a popis je od stránky 521 dále.
Teodor
Profil
juriad:

Děkuji!!!
jdu se na to vrhnout.


juriad:
Špatná zpráva...
Siemens tohle nezkousl, takže to nechám tak jak to bylo původně, jen černou barvu.
Děkuji za snahu:)
anonymníí
Profil *
juriad:
Ať to Siemens schroupá nebo ne (manuál jsem nestudoval), v kódu #5 musejí být apostrofy, ne uvozovky.

<td class=':="Data_block_1".OLEJ_HLADINA_K1:'>
juriad
Profil
anonymníí:
Ono jde o to, že my nevíme, jak ten Siemens funguje. Třeba hledá regex :=([^:]*):, a podle něj nahrazuje proměnné.
Je možné, že nahrazuje pouze v obsazích elementů, nikoli v jejich tazích (pokud si staví nějaký syntaktický strom z HTML).

Teodor:
Zkus ještě radu od anonymníí.

Když se podíváš do zdrojáku stránku (v prohlížeči Ctrl+U), vidíš, že tu proměnnou nahradil? Jak se to vlastně chová? Musíš být sdílnější, pokud chceš pomoct (my si ten Siemens pořizovat nebudeme :-)).

Ještě je možnost to zkusit pomocí toho JS:
Živá ukázka
Dáš třídu color věcem, které chceš obarvit a pak řekneš, jakou třídu takový element má dostat podle svého obsahu.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: