scan text naar bepaalde woorden

Status
Niet open voor verdere reacties.

geenID

Gebruiker
Lid geworden
1 jul 2009
Berichten
312
ik probeer een functie te maken die een stukje ingevoerde tekst naar bepaalde woorden zoekt, helaas lukt dit niet echt.

dus, wanneer een gebruiker een stukje tekst typt in de textarea, dan moet de functie naar 3 verschillende woorden zoeken, en dan moet de functie ook nog schrijven hoevaak deze woorden voorkomen.

ps; de javascript functie moet extern zijn.

dit is mij code

HTML:
<!DOCTYPE html>
<html lang="nl">
	<head>
		<title>My Javascript Page</title>
		<script type="text/javascript" scr="Javasc.js"></script>
	</head>
	<body>
		
		<form onSubmit="scantext(form);" name="form">
		<p> Typ je commetaar </p>
		<textarea id="commetaar" rows="4" colums="40"></textarea><br/>
		
		<input type="button" value="sumbit"/>

	</body>
</html>

Code:
function scantext(string1, string2, String3)
(

	document.write(string1.search("Drugs"));
	document.write(string1.search("Verslaving"));
	document.write(string1.search("Geweld"));
)
 
Laatst bewerkt:
Die code gaat sowieso niet werken. Er zitten een aantal problemen in, eerst die in de HTML.
1) Je <form> heeft geen aflsuitende tag.
2) De Javascript functie wordt bij submit aangeroepen, maar je hebt geen submit knop (type="submit") alleen een gewone knop.
3) Het ID van je textarea is verkeerd gespeld, niet echt een probleem omdat je er toch niets mee doet, maar het is wel iets waar je op moet letten.

In je Javascript.
1) Je functie vraagt om drie variabelen, die echter nergens worden ingevoerd.
2) Je functie staat tussen (), dit moeten {} zijn.
3) De search() functie geeft alleen aan waar in de tekst het eerste resultaat staat, daar heb je dus niets aan.
4) Je gebruikt document.write, dit resulteert in een compleet lege pagina met alleen de inhoud van document.write er in, niet echt gebruiksvriendelijk voor je bezoekers.

Je moet je eigenlijk even inlezen in regular expressions en de functies die daar bij horen.

Nou was ik me toch aan het vervelen, dus ik heb wat voor je in elkaar gedraaid.
Eerst de HTML:
HTML:
<!DOCTYPE html>
<html lang="nl">
    <head>
        <title>My Javascript Page</title>
    </head>
    <body>
        
        <form>
        <p> Typ je commetaar </p>
        <textarea id="commentaar" rows="4" colums="40"></textarea><br/>
        <input type="button" onclick="scantext()" value="sumbit"/>
        </form>
        <div id="resultaten"></div>
    </body>
</html>
Het verschil met jouw HTML is dat de scantext functie wordt aangeroepen door onlick, op de knop.

En het script zelf:
Code:
 function scantext()
 {
     var commentaar = document.getElementById("commentaar");
     var schrijfDiv = document.getElementById("resultaten"); //hier wordt het resultaat straks weergegeven.
     schrijfDiv.innerHTML = "";

     var tekst = commentaar.value;//de inhoud van de tekst
     var zoekWoorden = new Array("aap", "noot", "mies");//lijst van woorden waar nar gezocht wordt.
     var resultaten = new Array(); //hier wordt het resultaat naar weggeschreven
     
     var aantal = zoekWoorden.length;//de hoeveelheid woorden waar naar gezocht moet worden
     for (x = 0; x < aantal; x++)//een for loop om langs alle woorden te gaan.
     {
     	reg = new RegExp("\\b"+zoekWoorden[x]+"\\b", 'gi');//voor het zoekwoord wordt een regular expression aangemaakt
     	if(tekst.match(reg))//kijk of het woord gevonden wordt
     	{
     		resultaten[x] = tekst.match(reg).length;//onthoud hoe vaak het gevonden wordt
     	}
     	else
     	{
     		resultaten[x] = 0;//of zet het resultaat anders op nul
     	}
        schrijfDiv.innerHTML += zoekWoorden[x]+" kwam "+resultaten[x]+" keer voor in de tekst <br/>";//toon  de resultaten van de zoekopdracht
     }         
 }
Voor de werking, zie het commentaar. De match() functie levert trouwens een array op met daarin de gevonden stukken tekst, de lengte van de array is dus in dit geval het aantal gevonden woorden.

Hier staat een demo.

EDIT: er zijn ongetwijfeld andere/betere manieren om dit te doen, maar deze manier werkt in elk geval voor zover ik kan zien.
 
Laatst bewerkt:
wauw heel erg bedankt, alles werkt nu!

geen idee waarom het niet werkt wanneer ik het extern doe, maar internet werkt het :D
 
Tikfout wellicht? In de code in je openingsbericht staat bij in de <script> tag scr="", dat moet natuurlijk src="" zijn. Bij mij werkt hij gewoon als extern script.

EDIT: let ook op hoofdlettergebruik. Oh, en vergeet niet het onderwerp op 'opgelost' te zetten.
 
Laatst bewerkt:
Werkt feilloos. :)
Kleine opmerking: de demo doet het ook als je het <form name="form" action="google.nl"> omhulsel er af laat, want er zit geen echte submit op en je komt nooit bij Google uit. Screenshotje.

Met vriendelijke groet,
CSShunter
 
WHoops, da's inderdaad waar, die was ik vergeten te verwijderen.

EDIT: De <form> tags zelf kunnen in prncipe ook weg maar ik vind het netter om ze te laten staan, is bovendien handig als de inhoud van dat formulier later wel verstuurd moet worden.
 
Laatst bewerkt:
Klopt ook weer: hangt er helemaal van af wat de uiteindelijke bedoeling van de pagina is. Als de mailbox of database van geenID gevuld moet worden met de aantallen apen, noten en miezen, dan zal het een echte submit in een <form> worden.

Met vriendelijke groet,
CSShunter
 
nogmaals bedankt heren. Ik zal de status op opgelost zetten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan