Välja ett element baserat på färg/tagname?

Permalänk
Medlem

Välja ett element baserat på färg/tagname?

Har en sida här (http://privat.bahnhof.se/wb691989/Test/dynamictest.html) där jag gjort en dynamisk tabell, om jag nu skulle vilja skapa en funktion som enbart gör något med de rader som blir gröna, (checked/true) hur skulle jag kunna göra då?

Tanken är att knappen längst ner ska ta alla värden från de grönmarkerade fälten och sen skicka dom som en sträng.
Frågan är hur jag ska kunna välja ut just dom som är checked?

Testat något i stil med det här men det fungerar inte, varför? Går det att göra med någon färgselektion istället?

if (document.getElementByTagName("input").checked == true) { "do something" }

Permalänk
Medlem

Att använda jQuery och dess selector är absolut lättast.

Visa signatur

I'm Winston Wolfe. I solve problems.

Permalänk
Medlem

Men utan det? I mitt fall vill jag alltså kolla om fälten är gröna/röda och om dom är gröna så vill jag hämta informationen som finns i den raden och skicka den som en sträng när jag trycker på skicka. Hur det ska gå till vet jag inte riktigt.

Måste ju ha någon sorts räknare som räknar upp när jag "checkar" en ruta, och sen spara alla värden i en array på något vis? Är jag ute och cyklar då?

Permalänk
Medlem
Skrivet av badbolll:

Men utan det? I mitt fall vill jag alltså kolla om fälten är gröna/röda och om dom är gröna så vill jag hämta informationen som finns i den raden och skicka den som en sträng när jag trycker på skicka. Hur det ska gå till vet jag inte riktigt.

Måste ju ha någon sorts räknare som räknar upp när jag "checkar" en ruta, och sen spara alla värden i en array på något vis? Är jag ute och cyklar då?

Hur blir ett fält rött eller grönt då? Sätt value på en <input type="hidden"> samtidigt som du sätter färgen så skickas dess värde vid form-submit.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Hur blir ett fält rött eller grönt då? Sätt value på en <input type="hidden"> samtidigt som du sätter färgen så skickas dess värde vid form-submit.

Jo jag har en funktion som ser ut såhär;

function checked(t){ var id = t.id; // t.id är nu ID på checkboxen. id = id.replace("bu",""); // för att få det lite snyggare så tas här "bu" bort och lämnar endast kvar en siffra, ID't på checkboxen. if (document.getElementById(t.id).checked == true) { document.getElementById("r"+id).style.backgroundColor='green'; // hämtar elementet med id (tillexempel "r3") där man lägger till raderna och färgar grönt } else { document.getElementById("r"+id).style.backgroundColor='red'; // samma som ovan fast färgar rött. } // end else } // end function

Sen för att anropa den funktionen när jag dynamiskt bygger tabellen så ser det ut såhär;

checkbox.id = "bu"+i; // man vill att varje box ska få ett unikt ID och genom att ge den ett id plus i som räknas upp varje gång nån trycker på knappen lägg till. checkbox.onclick = function(){checked(this)}; // "this" skickar objektet ifråga (i det här fallet just checkboxen) till funktionen checked.

Hur jag sen ska kunna välja alla som är just checked, ja det är där jag kört fast lite. Måste lagra värdet (antingen true eller false) i en array tror jag och sen loopa igenom den och leta efter allt som är true? Svårt det här..

Permalänk
Medlem
Skrivet av badbolll:

Jo jag har en funktion som ser ut såhär;

function checked(t){ var id = t.id; // t.id är nu ID på checkboxen. id = id.replace("bu",""); // för att få det lite snyggare så tas här "bu" bort och lämnar endast kvar en siffra, ID't på checkboxen. if (document.getElementById(t.id).checked == true) { document.getElementById("r"+id).style.backgroundColor='green'; // hämtar elementet med id (tillexempel "r3") där man lägger till raderna och färgar grönt } else { document.getElementById("r"+id).style.backgroundColor='red'; // samma som ovan fast färgar rött. } // end else } // end function

Sen för att anropa den funktionen när jag dynamiskt bygger tabellen så ser det ut såhär;

checkbox.id = "bu"+i; // man vill att varje box ska få ett unikt ID och genom att ge den ett id plus i som räknas upp varje gång nån trycker på knappen lägg till. checkbox.onclick = function(){checked(this)}; // "this" skickar objektet ifråga (i det här fallet just checkboxen) till funktionen checked.

Hur jag sen ska kunna välja alla som är just checked, ja det är där jag kört fast lite. Måste lagra värdet (antingen true eller false) i en array tror jag och sen loopa igenom den och leta efter allt som är true? Svårt det här..

Förstår inte problemet riktigt. Checkboxen har ju redan ett true/false-värde som du kommer åt genom element.checked. Går det inte att använda?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Förstår inte problemet riktigt. Checkboxen har ju redan ett true/false-värde som du kommer åt genom element.checked. Går det inte att använda?

Problemet är att jag inte kommer åt det utanför funktionen, måste väl ha en separat funktion för att kolla exakt vilka fält som är checked? Och på något sätt ha en räknare som räknar upp plus ett varje gång man checkar en box?

Världens huvudvärk över den här uppgiften, måste gå att lösa på något sätt!

Permalänk
Medlem
Skrivet av badbolll:

Problemet är att jag inte kommer åt det utanför funktionen, måste väl ha en separat funktion för att kolla exakt vilka fält som är checked? Och på något sätt ha en räknare som räknar upp plus ett varje gång man checkar en box?

Världens huvudvärk över den här uppgiften, måste gå att lösa på något sätt!

Vad är det du försöker åstadkomma? Alla input-fält i en form skickas vid submit, du behöver inte hålla på att räkna på antalet checked på klientsidan... Förstår överhuvudtaget inte när du skulle behöva en räknare för alla fält som är checked...

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Vad är det du försöker åstadkomma? Alla input-fält i en form skickas vid submit, du behöver inte hålla på att räkna på antalet checked på klientsidan... Förstår överhuvudtaget inte när du skulle behöva en räknare för alla fält som är checked...

Jag är rätt dålig på att förklara märker jag

Alltså, när jag trycker på knappen ska BARA de gröna fälten skickas som en sträng, alltså bara de som är godkända (checked).

Permalänk
Medlem
Skrivet av badbolll:

Jag är rätt dålig på att förklara märker jag

Alltså, när jag trycker på knappen ska BARA de gröna fälten skickas som en sträng, alltså bara de som är godkända (checked).

Vad har du på mottagarsidan? Det är antagligen bra mycket enklare att göra filtreringen där.
edit: Vill tillägga att även om syftet är gott så är det inte alls bra att filtrera på färg. Det är ett attribut på ett DOM-element och har ingen koppling till data som skickas. Det är dessutom väldigt enkelt att få en bugg i – eller rent av manipulera – data när man låter javascript sköta arbete som en stängd server-miljö är bättre lämpad att ta hand om.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Vad har du på mottagarsidan? Det är antagligen bra mycket enklare att göra filtreringen där.
edit: Vill tillägga att även om syftet är gott så är det inte alls bra att filtrera på färg. Det är ett attribut på ett DOM-element och har ingen koppling till data som skickas. Det är dessutom väldigt enkelt att få en bugg i – eller rent av manipulera – data när man låter javascript sköta arbete som en stängd server-miljö är bättre lämpad att ta hand om.

Det är som en övningsgrej, finns ingen mottagarsida ännu. Vill bara att det ska visas uppe i adressfältet vad för data som skickats iväg. Typ såhär;
....adress.se?date=2010-6-30&time=1.5&act=fotboll

Dock bara de gröna som sagt, det är där jag fastnad alldeles totalt. Vet dock att det ska gå att lösa på något halvsmidigt sätt men har inte kommit på det..