2013-03-09 25 views
5

Ben sonra bir Gönder düğmesini tıklayın yazabilirsiniz ki (bir gibi şimdi yazarak kulüpler) ekranımda bir metin kutusu için olmak istiyorum ve bunu javascript baskılar bunu javascript ve kutuya yazdığınız her ne gönderir. İşte kodum Bu, işe yarayan kısım. Bu güzel, ama ben bir işlevi zaten olduğum ve fonksiyonunu yeniden istemiyoruz ederken ben o metin kutusu ve düğme girdi istiyorum diyelim böyleceJavascript - Javascript değişkenini ayarlamak için HTML giriş etiketiyle kullanıcı girişi?

<html> 
<body> 
    <input type="text" id="userInput"=>give me input</input> 
    <button onclick="test()">Submit</button> 
    <script> 
     function test() 
     { 
      var userInput = document.getElementById("userInput").value; 
      document.write(userInput); 
     } 
    </script> 
</body> 
</html> 

tamam mı?

sayesinde Jake

+6

Gerçekten son cümlede bahsettiğinizi anlamıyorum. Yani demek istediğim. ** zaten bir fonksiyondasınız ** ve ** yeniden başlatmak istemiyorum **. Bunun ne anlama gelmesi gerekiyor? – kidwon

+0

Yani bir kod, onunla bir işlev başlatmak istiyorsanız çalışır, ancak bir işlev zaten çalışıyorken, gönderme düğmesinin çalışmasını istiyorum. Bunu yapmak için düğmeye hangi özelliği ekleyebilirim? Akım başlatıldığında "test()" fonksiyonu çalışmayacak çünkü fonksiyonu başlatmak istemiyorum. – user1836262

+1

Yani girdi için döngüler bekleyen bir işlev mi istiyorsunuz? Bu javascript çalışmıyor. Bunun dışında, istediğiniz zaman ve istediğiniz yerde 'document.getElementById (" userInput ") değerini kullanabilirsiniz. – Dave

cevap

9

Komut dosyanız çalışırken, sayfayı herhangi bir şey yapmasını engeller. Sen iki şekilden biriyle birlikte bu çalışabilirsiniz:

  • (onlar bunu iptal ederseniz veya null)
  • ikiye kodunuzu Bölünmüş kullanıcı bir pop-up kutusu içine girdiği size dize verecektir Kullanım var foo = prompt("Give me input");, işlev - kullanıcı arabirimini ayarlamak için bir işlev çalıştırın, ardından kullanıcı düğmeyi tıkladığında çalışacak bir geri çağrı olarak ikinci işlevi sağlayın.
+0

Teşekkürler, ben sadece 2 fonksiyona ayıracağım – user1836262

4

Bu kötü tarzıdır, ama benzer bir şey yapmak için iyi bir neden varsayıyoruz.

<html> 
<body> 
    <input type="text" id="userInput">give me input</input> 
    <button id="submitter">Submit</button> 
    <div id="output"></div> 
    <script> 
     var didClickIt = false; 
     document.getElementById("submitter").addEventListener("click",function(){ 
      // same as onclick, keeps the JS and HTML separate 
      didClickIt = true; 
     }); 

     setInterval(function(){ 
      // this is the closest you get to an infinite loop in JavaScript 
      if(didClickIt) { 
       didClickIt = false; 
       // document.write causes silly problems, do this instead (or better yet, use a library like jQuery to do this stuff for you) 
       var o=document.getElementById("output"),v=document.getElementById("userInput").value; 
       if(o.textContent!==undefined){ 
        o.textContent=v; 
       }else{ 
        o.innerText=v; 
       } 
      } 
     },500); 
    </script> 
</body> 
</html> 
+0

Neden bu kötü bir stil? – user1836262

+0

Javascript, bir monolitik do-all döngüsüne sahip olmak yerine, olay yürütülürken en iyi sonucu verir. Bunu sadece belirli bir düzende gerçekleşmesi ve bunu uygulamak için başka bir yolun bulunmaması kesinlikle gerekli ise bunu yapmalısınız. – Dave

2

Geç okuma bu, ama .. Sorunuzu okumak şekilde, sadece iki kod satırı değiştirmesi gerekir:

kullanıcı girişi kabul fonksiyon ekranda geri yazar.

<input type="text" id="userInput"=> give me input</input> 
<button onclick="test()">Submit</button> 

<!-- add this line for function to write into --> 
<p id="demo"></p> 

<script type="text/javascript"> 
function test(){ 
    var userInput = document.getElementById("userInput").value; 
    document.getElementById("demo").innerHTML = userInput; 
} 
</script> 

İlgili konular