Permalänk
Medlem

Ändra text i <td>

echo '<td id="abc" class="small">'.$result['points'].'</td>';

Points = 100

Hur ska jag göra för att ersätta ''100'' med texten ''hundra''?
Har försökt med denna men får inte ihop det vad gör jag för fel?

<script> window.setInterval(function() { httpGetAsync('test.php', function(text) { if (document.getElementById("abc").innerHTML == 100) { document.getElementById('abc').innerHTML = "hundra"; } document.getElementById("abc").innerHTML = text; }); }, 1000); </script>

Permalänk
Medlem

$result['points'] == 100 ? 'hundra' : $result['points']
Med reservation för syntaxen. Eller måste det göras i javascript?

Skickades från m.sweclockers.com

Visa signatur

Oldschool [å:ldsku:l] adj. Användandet av datorprodukter som är äldre än 3 månader.

Permalänk
99:e percentilen
Skrivet av Jahlam:

function(text) { if (document.getElementById("abc").innerHTML == 100) { document.getElementById('abc').innerHTML = "hundra"; } document.getElementById("abc").innerHTML = text; }); }

Notera det fetade. Du gör alltid det, oavsett vad #abc har för innehåll, och framförallt gör du det efter att du eventuellt har ersatt innehållet med "hundra". Dessutom lär innerHTML alltid vara en sträng, aldrig (talet) 100. Slutligen ska du omedelbart kasta == all världens väg och använda === istället.

Den här tråden känns som ett klassiskt fall av att ställa en fråga om en tilltänkt suboptimal lösning utan att nämna någonting om det faktiska problemet. Vad är det egentligen du vill göra?

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem

Även om JavaScript är dynamiskt tycker jag att man inte bör blanda datatyper, läs Alling's svar.

<script> window.setInterval(function() { httpGetAsync('test.php', function(text) { var htmlText = "hundra"; var num = parseInt(text); if(num !== 100) { htmlText = text.toString(); } document.getElementById("abc").innerHTML = htmlText; }); }, 1000); </script>

Visa signatur
Permalänk
Medlem
Skrivet av kundun:

$result['points'] == 100 ? 'hundra' : $result['points']
Med reservation för syntaxen. Eller måste det göras i javascript?

Skickades från m.sweclockers.com

Ne behöver absolut inte vara javascript.

Din kod verkar enkel men fungerar inte. Gör jag nåt fel? Har jag missat nåt?

Permalänk
Medlem
Skrivet av Jahlam:

Ne behöver absolut inte vara javascript.

Din kod verkar enkel men fungerar inte. Gör jag nåt fel? Har jag missat nåt?

Syntaxen är antagligen inte rätt, var ett tag sedan jag höll pä med php.
Testa att göra en ny variabel innan echo...
typ: var $points = $result['points'] == 100 ? "hundra" : $result['points'];
Och sätt in $points i <td> istället

Skickades från m.sweclockers.com

Visa signatur

Oldschool [å:ldsku:l] adj. Användandet av datorprodukter som är äldre än 3 månader.

Permalänk
Medlem

Ne tror inte php är lösning jag vill ändra mer saker.

Varför finns inte bädda in kod knapp här? Använder <code></code> men hjälper ej!

Hittade denna kod som ändrar texten.

<table><tr><td id="small">100</td></tr></table> <script> var str = '<td>Någon Text Här</td>'; var tdElement = document.getElementById('small'); var trElement = tdElement.parentNode; trElement.removeChild(tdElement); trElement.innerHTML = str + trElement.innerHTML; </script>

Men hur lägger jag in denna funktionen i koden?

if (document.getElementById("small").innerHTML >=> 100)

Jag vill helt enkelt bestämma vad som ska stå vid viss siffra.

Något sådant men allt sitter ihop fel.

<table><tr><td id="small">100</td></tr></table> <script> if (document.getElementById("small").innerHTML >=> 100) Then execute this code var str = '<td>Någon Text Här</td>'; var tdElement = document.getElementById('small'); var trElement = tdElement.parentNode; trElement.removeChild(tdElement); trElement.innerHTML = str + trElement.innerHTML; </script>

Permalänk
Medlem

Du ska ju ändra det med php innan DOM'en görs. Finns ingen mening i att först plocka ut värden och skapa HTML med PHP och servera till clienten, för att sedan mha javascript ändra på värdena i efterhand.

$points = ""; switch ($result['points']) { case 100: $points = "hundra"; break; case 9: $points = "nio"; break; default: $points = $result['points']; break; } echo '<td id="abc" class="small">'.$points.'</td>';

Visa signatur

Oldschool [å:ldsku:l] adj. Användandet av datorprodukter som är äldre än 3 månader.

Permalänk
99:e percentilen
Skrivet av Jahlam:

Varför finns inte bädda in kod knapp här?

Om du vill ha en sådan (och mycket mer) kan du använda Better SweClockers.

Citat:

Använder <code></code> men hjälper ej!

Du kan inte använda HTML här på forumet. Du måste använda BB-kod: [code] för ett kodblock eller [cmd] för inlinekod.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem
Skrivet av kundun:

Du ska ju ändra det med php innan DOM'en görs. Finns ingen mening i att först plocka ut värden och skapa HTML med PHP och servera till clienten, för att sedan mha javascript ändra på värdena i efterhand.

$points = ""; switch ($result['points']) { case 100: $points = "hundra"; break; case 9: $points = "nio"; break; default: $points = $result['points']; break; } echo '<td id="abc" class="small">'.$points.'</td>';

Det blir krångligt för mig pga har 2 st $points i koden vill bara att den ena ändras.

Tror ändå att det blir lättare med javascript.

Skrapade ihop denna kod men... Den ändrar bara värdet i första raden inte i andra raden.
Jag vill att den ska ändra i alla rader. Hur göra?
Koden gör detta: Om siffran är lika med eller högre än 10 så byter den ut den till 1000.

<table><tr><td id="X">0</td></tr></table> <table><tr><td id="X">0</td></tr></table> <script> if (document.getElementById("X").innerHTML >= 10) { capturePhoto(); } function capturePhoto() { var str = '<td>1000</td>'; var tdElement = document.getElementById('X'); var trElement = tdElement.parentNode; trElement.removeChild(tdElement); trElement.innerHTML = str + trElement.innerHTML; } </script>

Permalänk
Medlem

Förminskade koden. Nu ser den ut så här.
Men fortfarande ändrar den bara i första raden.
Hur göra så den ändrar i alla rader?

<table> <tr><td id="X">0</td></tr> <tr><td id="X">0</td></tr> </table> <script> if (document.getElementById("X").innerHTML == 0) { document.getElementById('X').innerHTML = '1'; } </script>

Permalänk
Medlem

Sätt id på parent istället och iterera över childElements
Eller använd class isf id och använd getElementByClass för att få en samling som du kan loopa

Id ska vara unika, därför får du bara första elementet

Skickades från m.sweclockers.com

Visa signatur

Oldschool [å:ldsku:l] adj. Användandet av datorprodukter som är äldre än 3 månader.

Permalänk
99:e percentilen
Skrivet av Jahlam:

Förminskade koden. Nu ser den ut så här.
Men fortfarande ändrar den bara i första raden.
Hur göra så den ändrar i alla rader?

<table> <tr><td id="X">0</td></tr> <tr><td id="X">0</td></tr> </table> <script> if (document.getElementById("X").innerHTML == 0) { document.getElementById('X').innerHTML = '1'; } </script>

Som namnet antyder måste id vara unikt; det får inte finnas två element med samma id.

Angående problemet i sin helhet är du verkligen inne på helt fel spår. Detta är något som solklart ska göras på serversidan.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem
Skrivet av Jahlam:

Förminskade koden. Nu ser den ut så här.
Men fortfarande ändrar den bara i första raden.
Hur göra så den ändrar i alla rader?

<table> <tr><td id="X">0</td></tr> <tr><td id="X">0</td></tr> </table> <script> if (document.getElementById("X").innerHTML == 0) { document.getElementById('X').innerHTML = '1'; } </script>

Enligt spec så får du inte ha samma IDn i samma dom. Antingen använder du ID på förälder och itererar som ovanstående, eller använder classer.

Som tidigare talare så håller jag med att detta bör göras på serversidan.

Visa signatur

Arch - Makepkg, not war -||- Gigabyte X570 Aorus Master -||- GSkill 64GiB DDR4 14-14-15-35-1T 3600Mhz -||- AMD 5900x-||- Gigabyte RX6900XT -||- 2x Adata XPG sx8200 Pro 1TB -||- EVGA G2 750W -||- Corsair 570x -||- O2+ODAC-||- Sennheiser HD-650 -|| Boycott EA,2K,Activision,Ubisoft,WB,EGS
Arch Linux, one hell of a distribution.