webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Webbutveckling > Javascript

Javascript Här diskuteras det som rör Javascript, AJAX, DOM & DHTML.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2012-05-29, 23:31   #1
swingman
Medlem
 
Registrerad: 2006-01-15
Inlägg: 86
Lösningar: 0
varför fungerar inte min alert? Kraschar koden och varför

Kan någon snälla berätta för mig varför följande kod kraschar. alerten kommer inte upp när jag klickat på mybutton.
Kod:
window.onload = init;

function init () {
	hideAllPublications();
	createForm();
}

function hideAllPublications () {
	var publications = document.getElementById('publications');
	var para = publications.getElementsByTagName('p');
	
	for(var i = 0; i < para.length; i++){
		para[i].style.display= 'none';
		}
}

function createForm () {
	var publications = document.getElementById('publications');
	var myform=document.createElement("form");
	publications.appendChild(myform)[0];	
    	
	var inputBox=document.createElement('input');
	inputBox.setAttribute('id','myInput');	
	myform.appendChild(inputBox)[0];	
	document.getElementById('myInput').focus();

    	mybutton=document.createElement('BUTTON');
	mybutton.style.height=20;
	mybutton.style.width=75;
    
    	theText=document.createTextNode('Search');
    	mybutton.appendChild(theText);	
	myform.appendChild(mybutton);
	
	var str= document.getElementById('myInput').firstChild.nodeValue;
	mybutton.onclick = alert(str);	
}
swingman besöker inte forumet just nu   Svara med citat
Äldre 2012-05-30, 06:33   #2
voigtann1
Forumvärd
 
voigtann1s avatar
 
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 502
Lösningar: 537
När du binder event så skall du binda en funktion, men nu binder du en en funktion som körs direkt och som inte retunera en metod.

Kod:
mybutton.onclick = function() {
	var str= document.getElementById('myInput').value;
	alert(str);
}
och du använder inte dig av firstChild i en input element, ett input element har inga barn.
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck
voigtann1 besöker inte forumet just nu   Svara med citat
Äldre 2012-05-30, 07:09   #3
swingman
Medlem
 
Registrerad: 2006-01-15
Inlägg: 86
Lösningar: 0
Voigtann1: Tack för svaret. Jag skrev en ny tråd på det här för att minska på koden men du hade egentligen redan sagt det där med att inte binda en funktion som inte returnerar något. Det jag ändå undrar är varför jag inte få något värde tillbaka nu. Det är bara null. Jag skulle vilja ha få texten jag skriver in i inputboxen tillbaka i en alert.
Min kod just nu...
Kod:
window.onload = init;

function init () {
	hideAllPublications();
	createForm();
}

function hideAllPublications () {
	var publications = document.getElementById('publications');
	var para = publications.getElementsByTagName('p');
	
	for(var i = 0; i < para.length; i++){
		para[i].style.display= 'none';
		}
}

function createForm () {
	var publications = document.getElementById('publications');
	var myform=document.createElement("form");
	publications.appendChild(myform)[0];	
    	
	var inputBox=document.createElement('input');
	inputBox.setAttribute('id','myInput');	
	myform.appendChild(inputBox)[0];	
	document.getElementById('myInput').focus();

    	mybutton=document.createElement('BUTTON');
	mybutton.style.height=20;
	mybutton.style.width=75;
    
    	theText=document.createTextNode('Search');//assign the value of the button
    	mybutton.appendChild(theText);	
	myform.appendChild(mybutton);
	
	var str= document.getElementById('myInput').nodeValue;
	mybutton.onclick = function() {alert(str);}	
}
swingman besöker inte forumet just nu   Svara med citat
Äldre 2012-05-30, 07:14 Markerad som löst av swingman   #4
voigtann1
Forumvärd
 
voigtann1s avatar
 
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 502
Lösningar: 537
den är null för det är inte det du vill kolla på, det är value du vill kolla på i en input, sen måste du köra str kollen varje gång då annars kommer str vara default värdet eller det värde som #myInput har när koden läses in första gången.
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck
voigtann1 besöker inte forumet just nu   Svara med citat
Äldre 2012-05-30, 22:49   #5
swingman
Medlem
 
Registrerad: 2006-01-15
Inlägg: 86
Lösningar: 0
så enkelt när du väl säger svaret men jag hoppas att jag lär mig något och att prgramering blir lättare med tiden...
swingman besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Webbutveckling > Javascript

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 01:07.


Powered by: vBulletin Version 3.8.6
Copyright © webForum