• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Mam problem z kodem w javascript który ma zadanie wypisać ilość samogłosek we wcześniej podanym wyrazie

VPS Starter Arubacloud
0 głosów
1,903 wizyt
pytanie zadane 3 września 2017 w JavaScript przez mikolaj_c Początkujący (290 p.)
<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8"/>
	<title></title>
	<meta name="description" content=""/>
	<link rel="stylesheet" href="css.css" type="text/css"/>

</head>
<body>
	<script>
	function samogloski()
	{
		var il_sam=0;
		var str = document.getElementById("op").innerHTML;
		for(var n=0;n<str.lenght;n++)
		{
			if(str.charAt(n)=="a"||str.charAt(n)=="e"||str.charAt(n)=="i"||str.charAt(n)=="o"||str.charAt(n)=="u")
			{
				il_sam++;
			}
		}
		document.getElementById("il_sam").innerHTML=il_sam;
	}
	
	</script>
	<input id="op" ><input type="submit" value="spraawdz ilośc samogłosek" onclick="samogloski()">
	<div id="il_sam"></div>
</body>
</html>

 

5 odpowiedzi

+1 głos
odpowiedź 3 września 2017 przez Kamil Łydka Stary wyjadacz (13,600 p.)
wybrane 3 września 2017 przez mikolaj_c
 
Najlepsza

Masz dwa błędy:

1. Jeśli chcesz pobrać wartość inputa, to posługujesz się .value, a nie .innerHTML, czyli:

var str = document.getElementById("op").value;

2. Masz literówkę w pętli for length, a nie lenght

+1 głos
odpowiedź 3 września 2017 przez jankowa1ski Gaduła (3,560 p.)
edycja 3 września 2017 przez jankowa1ski
Troche nie ogarniam co zrobiłes? Czy input z id op ma byc tym do wpisanie slowa? jesli tak mozesz mu dac atrybut type = text

potem jesli chcesz pobrac wartosc wpisana użyj własciowsci value a nie innerHTML

no i wgl to mozesz dac je w form

Aha no i zle zapisales " length" przez co to co w petli sie wgl nie wykonuje
+1 głos
odpowiedź 3 września 2017 przez kap Stary wyjadacz (11,620 p.)

Nie mieszaj operacji na DOm z logiką, zrób funkcję, która przyjmuje wyraz i zwraca liczbę samogłosek. Pobieranie wartości pola i wyświetlanie wyniku powinno odbywać się osobno. Btw, liczenie samogłosek można ładniej rozwiązać:
 

const samogłoski = ['a', 'e', 'i', 'o', 'u', 'y']

function liczSamogłoski (wyraz) {
  return [...wyraz]
    .filter(litera => samogłoski.includes(litera))
    .length
}

CodePEn: https://codepen.io/caderek/pen/KvEaBZ?editors=0011

+1 głos
odpowiedź 3 września 2017 przez Tomek Sochacki Ekspert (227,510 p.)

albo po prostu regexp:

return ( wyraz.match( /[aeiouy]/gi ) || [] ).length;

i wyraz jako string.

komentarz 3 września 2017 przez niezalogowany

Zawsze się zastanawiałem, dlaczego match przy niepowodzeniu, nie zwraca pustej tablicy...

komentarz 4 września 2017 przez Tomek Sochacki Ekspert (227,510 p.)

niezależnie od tego co było powodem takiej decyzji to myślę, że tak już pozostanie w js forever ze względu na zachowanie zgodności wstecz.

Gdyby był zwrot pustej tablicy to wszelkie instrukcje warunkowe szlag by trafił, bo przecież w js 

!![]; //true

bo tablica to po prostu obiekt, a js nie posiada oddzielnego typu dla Array.

komentarz 4 września 2017 przez niezalogowany
Też o tym myślałem, ale z drugiej strony jest metoda test. Według mdn zostały wprowadzone w tej samej wersji języka. No nic..
0 głosów

Podobne pytania

0 głosów
4 odpowiedzi 908 wizyt
0 głosów
2 odpowiedzi 539 wizyt

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...