Vinnaren i pepparkakshustävlingen!
2024-07-11, 12:44
  #13
Medlem
Finikantens avatar
Citat:
Ursprungligen postat av Enterprise
Bra att det fungerar, men det där är jättemärklig kod från ett vanilj-Javascript-perspektiv.

Givet att memberInfo._createdDate är en sträng med ett ISO-datum, hade nedanstående varit normal JS-kod för samma ändamål:

Kod:
const date = new Date(memberInfo._createdDate);
const 
options = {
          
day"numeric",
          
month"long",
          
year"numeric",
        };
$w("#registerDate").text date.toLocaleDateString("en-US"options); 

Det beror på att toLocaleDateString är en funktion tillhörig Date-objekt och inte strängar.
Alternativt är memberInfo._createdDate redan ett Date-objekt och i så fall hade följande kod räckt:
Kod:
const options = {
          
day"numeric",
          
month"long",
          
year"numeric",
        };
$w("#registerDate").text memberInfo._createdDate.toLocaleDateString("en-US"options); 

Med din version funkade inte "options". Fråga mig inte varför men systemet skrev att det inte går med den uppställningen.
Citera
2024-07-11, 12:52
  #14
Medlem
Finikantens avatar
En annan fråga angående likes-funktion för bilder. En besökare klickar på en bilds "tomma" hjärta som då blir fullt och på sidan ser man antalet likes öka med antal klick. Detta funkar bra på själva sidan men databasen adderar inte utan lägger bara till en 1:a efter de föregående, så om bilden hittills har fått 11 klick står det 111 i databasen efter nästa klick istället för 12.

Här är min kod som alltså bara är felaktig ifråga om databasen:

$w("#emptyHeart1").onClick(() => {
wixData.get("Members", memberId)
.then((item) => {
$w("#emptyHeart1").collapse();
$w("#fullHeart1").expand();
$w("#likes1").text = (Number($w("#likes1").text) + 1).toLocaleString();
item.likes1 = true;
wixData.update("Members", item).catch();})
})
})
Citera
2024-07-11, 13:11
  #15
Medlem
Enterprises avatar
Det låter som ett klassiskt fel när det gäller Javascript nämligen att du måste omvandla strängen till ett heltal innan du lägger till 1.
Googla parseInt
Citera
2024-07-11, 13:11
  #16
Medlem
Finikantens avatar
Citat:
Ursprungligen postat av Enterprise
Det låter som ett klassiskt fel när det gäller Javascript nämligen att du måste omvandla strängen till ett heltal innan du lägger till 1.
Googla parseInt

Okej, ska kolla det.
Citera
2024-07-11, 13:18
  #17
Medlem
Finikantens avatar
Citat:
Ursprungligen postat av Finikanten
Okej, ska kolla det.

Ska det räcka med att lägga in console.log(parseInt('123')); efter strängen eller hur är det tänkt? Är du snäll och visar hur du själv skulle lägga in det i min kod?
Citera
2024-07-11, 13:18
  #18
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Finikanten
Okej, ska kolla det.
en ledtråd, jämför output när du kör i konsollen:
Kod:
console.log("11" 1);
console.log(parseInt("11") + 1); 
__________________
Senast redigerad av Enterprise 2024-07-11 kl. 13:26.
Citera
2024-07-11, 13:28
  #19
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Finikanten
Ska det räcka med att lägga in console.log(parseInt('123')); efter strängen eller hur är det tänkt? Är du snäll och visar hur du själv skulle lägga in det i min kod?
console.log() använder du enbart för att skriva ut någonting till konsollen för test eller debuggning.
Du behöver i din kod använda parseInt() för att omvandla den text som du hämtar till ett heltal innan du lägger till 1.
Resten får du komma på själv, annars lär du dig inget.
Citera
2024-07-11, 13:42
  #20
Medlem
Finikantens avatar
Citat:
Ursprungligen postat av Enterprise
console.log() använder du enbart för att skriva ut någonting till konsollen för test eller debuggning.
Du behöver i din kod använda parseInt() för att omvandla den text som du hämtar till ett heltal innan du lägger till 1.
Resten får du komma på själv, annars lär du dig inget.

Så här skrev jag nu:

$w('#emptyHeart1').onClick(() => {
wixData.get('Members', memberId)
.then((item) => {
$w('#emptyHeart1').collapse();
$w('#fullHeart1').expand();
$w('#likes1').text = (parseInt($w('#likes1').text) + 1).toString();
item.likes1 = true;
wixData.update('Members', item).catch();
});
});

Detta resulterade dock först i att det stod NA (not aviable antar jag?) på sidan och i databasen stod det att jag måste convertera till text. När jag hade gjort det manuellt och det stod 1 i databasen och klickade för en andra like så stod det märkligt nog 3 istället för 2. Vad kan detta bero på?
Citera
2024-07-11, 13:51
  #21
Medlem
Finikantens avatar
Jag ändrade filtyp från text till nummer och då funkade det i databasen men däremot inte på sidan men det kan jag nog lösa på något vänster.

Det här retar dock gallfeber på mig av frustration:

"$w("#likes1").totalCount = (memberInfo.likes1)"; ---> Sidan säger att jag inte kan använda ett nummervärde för en textremsa, alltså inte heller "number", "num" eller "amount" men databasen har ju ett nummer! Så hur skriver man då för att visa antal likes?
__________________
Senast redigerad av Finikanten 2024-07-11 kl. 14:01.
Citera
2024-07-11, 16:30
  #22
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Finikanten
Jag ändrade filtyp från text till nummer och då funkade det i databasen men däremot inte på sidan men det kan jag nog lösa på något vänster.

Det här retar dock gallfeber på mig av frustration:

"$w("#likes1").totalCount = (memberInfo.likes1)"; ---> Sidan säger att jag inte kan använda ett nummervärde för en textremsa, alltså inte heller "number", "num" eller "amount" men databasen har ju ett nummer! Så hur skriver man då för att visa antal likes?
Du får skilja på dina element på hemsidan (som består av text) och dina data i databasen (som kan vara heltal, datum etc). Prova alltså att omvandla värdet till en sträng.
Citera
2024-07-11, 16:36
  #23
Medlem
Finikantens avatar
Citat:
Ursprungligen postat av Enterprise
Du får skilja på dina element på hemsidan (som består av text) och dina data i databasen (som kan vara heltal, datum etc). Prova alltså att omvandla värdet till en sträng.

Det knepiga är att allt ser rätt ut på sidan när jag använder filtypen "Text" men då blir det knepigt i databasen. Om jag istället använder filtypen "Number" så blir det perfekt i databasen men då vill sidan inte visa någonting trots att jag använder den här koden:

wixData.get("Members", memberId)
.then((memberInfo) => {
if (memberInfo.likes1 === undefined) {
$w("#likes1").text = "0";
console.log("no likes");
} else {
$w("#likes1").text = (memberInfo.likes1);
console.log("likes added");
}
});

Jag vädjar därför om en enkel kod för att kunna visa siffror med filtypen number istället för text på sidan (att det ska behöva vara så krångligt?!).
Citera
2024-07-11, 17:19
  #24
Medlem
Enterprises avatar
hur blir det om du i din kod kör:
Kod:
$w("#likes1").text memberInfo.likes1.toString(); 
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in