webForumDet fria alternativet

Räkna samman poäng varje basketspelare gör under en match

JavaScript

19 svar · 1 681 visningar · startad av basketboll

Medlem sedan jan. 201224 inlägg
Frågan#1

Hej kära forum☺

Är engagerad i den underbara sporten Basket. Försöker åstadkomma en ”kalkylator” som räknar ut hur många poäng varje spelare gör under en match.

Kalkylatorn är uppbyggd såhär:
- ”list” med aktuella tröjnummer
- knapp ”1p”
- knapp ”2p”
- knapp ”3p”
- knapp ”rensa”
- knapp ”spara”
- en tabell med 2 kolumner och 12 rader

  1. först väljer man tröjnummer från listan
  2. sedan trycker man på ngn av knapparna ”1p”, ”2p” eller ”3p”

Söker nu hjälp med en onclick-kod för t.ex. knapp ”2” Det som jag vill ska ske vid knapptryckningen är
a) finns tröjnumret?
b) Om nej: gå till första tomma raden
c) Fyll i tröjnumret (från listan) i första kolumnen
d) Addera 2 i andra kolumnen
e) Om ja: gå till aktuell rad
f) Addera 2 till talet i andra kolumnen
Är detta ens möjligt med javascript/jquery?
Tack på förhand
//Peter

Medlem sedan juni 20019 519 inlägg
#2

Ja, detta är möjligt.

Jag hade gjort ett objekt som kanske heter players som är ett tomt objekt, varje gång du väljer spara så kolla den om players["p" + number] == undefined om det är det skapa en ny array med samma namn som "p" + number och sätt den som en tom array.

Sen är det bara att köra players["p" + number].push(3); för att ge 3 poäng.

Efter så kolla igenom hela players objektet och summera varje spelares värde i arrayn. du behöver nog inte ens använda dig av en array om du inte är intresserad över att kunna presentera varje poäng en spelare har gjort i så fall ändra arrayn till ett tal och kör players["p" + number] += 3;

Medlem sedan jan. 201224 inlägg
#3

Tack voigtann1 för ditt svar☺

Tyvärr är jag lite noob så jag hänger inte riktigt med…….

Jag hade gjort ett objekt som kanske heter players som är ett tomt objekt, varje gång du väljer spara så kolla den om players["p" + number] == undefined om det är det skapa en ny array med samma namn som "p" + number och sätt den som en tom array.

Så varje gång jag väljer ett tröjnummer

if players["p" + number] == undefined then players["p" + number] == 0

När jag därefter trycker på "3p"

onclick=players["p" + number] += 3;

tack på förhand
//Peter

Medlem sedan juni 20019 519 inlägg
#4

javascript skriver if frågor:

if(condition_is_true) {} else {}

Jag hade skapat en metod med antal poäng, tröjnummer/splare få du ju reda på din dropdown eller hur du nu ha gjort markup:en

Egentligen behöver du kanske inte ens behöver göra det så avancerat, var är målet? Att få ut en lista på alla spelare som har tagit poäng? eller varje poäng som har kommit in?

Medlem sedan jan. 201224 inlägg
#5

Det där med att göra mindre avancerad låter perfekt för en noob som jag
Målet är att få reda på vilka spelare har gjort hur många poäng. Tex: #8 30p
#15 21p …..

//Peter

Medlem sedan juni 20019 519 inlägg
#6

Gjorde ett exempel på hur jag hade löst det:

http://jsbin.com/olower/3/edit

kör jquery mest för att binda events och enklare använda mig av html5s data attribut.

Medlem sedan jan. 201224 inlägg
#7

Tack Voigtann1, exakt så har jag tänkt mig det hela :)
En sista bedjan: orkar du fylla på med lite förklaringar till koden, så att jag/vi också lär oss?

tack för all hjälp :bire

Medlem sedan juni 20019 519 inlägg
#8

Jag vet inte om det behövs förklara... är 26 rader kod som gör allt och 3 metoder där en av dom bara summera en array. Vad är det som är oklart med koden tycker du?

Medlem sedan jan. 201224 inlägg
#9

voigtann1 skrev:

Jag vet inte om det behövs förklara... är 26 rader kod som gör allt och 3 metoder där en av dom bara summera en array. Vad är det som är oklart med koden tycker du?

du har rätt :) Ju mer jag studerar det dessto mer inser jag att frågan var förhastad :r

Medlem sedan jan. 201224 inlägg
#10

Rensa tabellen

Har nu i flera timmar utan framgång åstadkomma en "rensa"-knapp

 $("table td button.clear").click(function () {
      $(this).(parent() .parent() .remove();

    });

-> händer ingenting

$("button").click(function () {
      $("#Tabell tr:gt(0)").remove();

    });

->tabell raden försvinner, men när jag kör igen så plussas det bara på :q

Medlem sedan juni 20019 519 inlägg
#11

ja, det är ju objektet som har all data, räcker inte att bara ta bort html raden då den generera om table hela tiden, du få rensar spelaren i objektet:

delete players['voigtann1'];
Medlem sedan jan. 201224 inlägg
#12

Rensa lagrad data

Nu har jag i nästan 10 timmar förgäves försökt hitta fungerande sätt till att rensa "lagrad" data :x
Försökt med bl.a. följande:1)

$('#remove').click(function() {
    $('#players option').each(function(index, option) {
        $(option).remove();
    });
$('#remove').click(function() {
$('#players').children(':selected').removeProp('selected');
});
$('#remove').click(function() {
$('#players').remove();
});

Så hoppet står åter till forumet :OO

Medlem sedan juni 200032 967 inlägg
#13

Är det inte enklast att bara ladda om sidan? :)

Medlem sedan juni 20019 519 inlägg
#14

Du har ju inte gjort något för att rensar i objektet players som jag skrev att du behöver göra på: http://www.webforum.nu/showpost.php?p=1546418&postcount=11

Du rensar bara DOM strukturen,vilket är onödigt då du rendera om players objektet varje gång du lägger in en ny spelare.

Om du bara skall rensar alla spelare så räcker det ju att du skriver över players till ett nytt objekt:

$("#clear").click(function(){
    players = {};
});

men som @nders skriver så räcker det ju att du ladda om sidan.

Medlem sedan jan. 201224 inlägg
#15

Tyvärr händer ingenting när jag klickar på knappen :q

voigtann1 skrev:

Om du bara skall rensar alla spelare så räcker det ju att du skriver över players till ett nytt objekt:

$("#clear").click(function(){
    players = {};
});
<button class="clear">Rensa</button>
$("#clear").click(function() {
    players = {};
});

Vill ha en rensa-knapp, eftersom poängen ska räknas ut för 2 lag

Medlem sedan juni 20019 519 inlägg
#16

nej, du måste ju rendera om tabellen med metoden

renderTable()

eller om du vill bara kunna ta bort en spelare:
http://jsbin.com/olenic/3/

Medlem sedan jan. 201224 inlägg
#17

Hej igen:-)
Om jag trycke in fel poäng, och vill därför ta bort senaste, hur gör jag det?

Har ägnat senaste tiden åt att googla, läsa i böcker (Headfirst jQuery) men inte hittat fungerande kod.
Har misslyckats med följande:

$('#c').click(function() {
                       $(this).closest('#points').remove();
});

 $('#C').click(function() {

var $this = $(this);

$this.val($this.data("0"));

function pushButton(buttonValue) {
      if (buttonValue == 'C') {
           document.getElementById('screen').value = '';

});

$('#C').click(function() {

clear();

});
var sista = point;
$(".c").click(function(e) { 
    
raderaPoints(player, point - sista);
});

//Peter

Medlem sedan juni 20019 519 inlägg
#18

All kod du postar bara ändringar mot DOM trädet, vilket min kod struntar k mer eller mindre då all data är ett JavaScripts objekt.

Medlem sedan jan. 201224 inlägg
#19

voigtann1 skrev:

All kod du postar bara ändringar mot DOM trädet, vilket min kod struntar k mer eller mindre då all data är ett JavaScripts objekt.

ajdå, jag som tänkte använda till en mobil applikation - kommer din kod fungera då? eftersom det inte är jQuery?
Och kan jag lösa problemet med att rätta poängen?

Medlem sedan juni 20019 519 inlägg
#20

jag använder mig av jquery, men inte för att lagra datan om spelare, det är extremt onödigt att använda jquery för det ;) och om du klarar köra jquery på mobilen så kan du köra mina skript på mobilen.

Om du skall ta bort det senaste poänget på en spelare så kolla motsatsen till push som är pop ( https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/pop )

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)