varför fungerar inte min alert? Kraschar koden och varför

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • swingman
    Medlem
    • 2006-01-15
    • 86

    #1

    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.
    Code:
    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);	
    }
  • voigtann1
    Forumvärd
    • 2001-06-14
    • 8810

    #2
    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);
    }[/kod]

    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

    Comment

    • swingman
      Medlem
      • 2006-01-15
      • 86

      #3
      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...
      Code:
      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);}	
      }

      Comment

      • voigtann1
        Forumvärd
        • 2001-06-14
        • 8810

        #4
        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

        Comment

        • swingman
          Medlem
          • 2006-01-15
          • 86

          #5
          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...

          Comment

          Working...