2017-02-09 79 views
0

其他類似的問題如前所述,但答案通常是某些變量沒有被正確更新,因此每次按鈕都會產生相同的結果。 我有一個帶有兩個文本框的html頁面,它們之間有一個按鈕,當它們被點擊時,從最上面的框中取文本,修改它,然後修改後的文本顯示在底部框中。爲什麼該功能只能工作一次,即使在文本框中放置新文本時也是如此?當使用.getElementByID時,Onclick函數只能工作一次。

document.getElementById('buttonVal').onclick = function(){ 
 
    \t var text = document.getElementById('textbox').value; 
 
     \t var revText = document.getElementById('buttonVal').onclick = reverse(text) 
 
     \t document.getElementById('revBox').value = revText 
 
    }; 
 
    
 
    function reverse(textString){ 
 
     return textString.split("").reverse().join(""); 
 
    }
<form> 
 
     <fieldset> 
 
     <legend>text reversal</legend> 
 
     <p> 
 
     Enter text in box below 
 
     <p> 
 
      <label></label> 
 
      <textarea id = "textbox" 
 
        rows = "10" 
 
        cols = "120"></textarea> 
 
     <br> 
 
     <p> 
 
     <input type="BUTTON" value="REVERSE" id="buttonVal"> 
 
     <br> 
 
     <p> 
 
     Your text backwards is: 
 
     <p> 
 
     <label></label> 
 
      <textarea id = "revBox" 
 
        rows = "10" 
 
        cols = "120"></textarea> 
 
     </fieldset> 
 
    </form>

回答

0

的問題是,你正在使用的onclick方法onclick內。如果你只是從var revText = document.getElementById('buttonVal').onclick = reverse(text)(這也是糟糕的,因爲你是雙重分配東西,其中之一是onclick方法)簡化爲var revText = reverse(text);,你可以避免一些複雜性,使代碼工作。

document.getElementById('buttonVal').onclick = function(){ 
 
var text = document.getElementById('textbox').value; 
 
var revText = reverse(text); 
 
document.getElementById('revBox').value = revText; 
 
    }; 
 
    
 
    function reverse(textString){ 
 
     return textString.split("").reverse().join(""); 
 
    }
<form> 
 
    <fieldset> 
 
    <legend>text reversal</legend> 
 
    <p> 
 
    Enter text in box below 
 
    <p> 
 
     <label></label> 
 
     <textarea id = "textbox" 
 
       rows = "10" 
 
       cols = "120"></textarea> 
 
    <br> 
 
    <p> 
 
    <input type="BUTTON" value="REVERSE" id="buttonVal"> 
 
    <br> 
 
    <p> 
 
    Your text backwards is: 
 
    <p> 
 
    <label></label> 
 
     <textarea id = "revBox" 
 
       rows = "10" 
 
       cols = "120"></textarea> 
 
    </fieldset> 
 
</form>

+0

我不知道該怎麼做,你們兩個都是對的,但是這位祕書長比CodeCabin更徹底地回答了這個問題,儘管是第二快的......所以我給這個祕書打了正確的答案 – Vince

+0

@Vince Kepp記住你可以還+1另一個答案,因爲這也是一個很好的答案。 – thesecretmaster

1

非常簡單的解決辦法:

改變這種

var revText = document.getElementById('buttonVal').onclick = reverse(text) 

這個

var revText = reverse(text); 

,首先線是或多或少的胡言亂語。