• 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
380 wizyt
pytanie zadane 3 września 2017 w JavaScript, jQuery, AJAX przez mikolaj_c Nowicjusz (220 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 Dyskutant (9,370 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 (175,900 p.)

albo po prostu regexp:

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

i wyraz jako string.

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

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

komentarz 4 września 2017 przez Tomek Sochacki Mędrzec (175,900 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 (94,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,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,680 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
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

63,313 zapytań

109,570 odpowiedzi

228,886 komentarzy

43,982 pasjonatów

Przeglądających: 265
Pasjonatów: 12 Gości: 253

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.

...