• 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

0 głosów
431 wizyt
pytanie zadane 3 września 2017 w JavaScript, jQuery, AJAX przez mikolaj_c Początkujący (270 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 (12,870 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

+2 głosów
odpowiedź 3 września 2017 przez Tomek Sochacki Mędrzec (188,080 p.)

albo po prostu regexp:

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

i wyraz jako string.

komentarz 3 września 2017 przez argeento Szeryf (97,300 p.)

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

komentarz 4 września 2017 przez Tomek Sochacki Mędrzec (188,080 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 argeento Szeryf (97,300 p.)
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..
+1 głos
odpowiedź 3 września 2017 przez jankowa1ski Gaduła (3,530 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,700 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

0 głosów

Podobne pytania

Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

66,319 zapytań

113,057 odpowiedzi

239,193 komentarzy

46,585 pasjonatów

Przeglądających: 149
Pasjonatów: 2 Gości: 147

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...