2015-10-12 43 views
0

我正在閱讀本書雄辯的Javascript,我在練習中遇到了一些麻煩(我把所有的練習放在一個頁面上,這是沒有問的)。基本上它所要求的是創建一個函數,它將經過一個字符串,在該字符串中找到「B」的數量,然後返回該數字。出於某種原因,它只返回0.該函數本身很好,但我無法找到解決辦法。爲什麼不提取字符串的值?

$(document).ready(function() { 
    var text = $('#beaninput').val(); 
    function countBeans(string) { 
     var beanCounter = 0; 
     for (i = 0; i < string.length; i++) { 
      if (string.charAt(i) == "B") { 
       beanCounter += 1; 
      }; 
     }; 
     return beanCounter; 
    }; 
    $('#beanbutton').click(function() { 
     $('#beanbot').empty(); 
     $('#beanbot').append(countBeans(text) + " Beans"); 
    }); 
}); 

作爲參考,#beaninput是一個HTML文本輸入字段,和#beanbutton是應顯示「B」的在#beanbot的數目的按鈕。

謝謝!

編輯:謝謝大家!工作出色。

+0

你可能需要把'變種文字= $( '#beaninput')VAL();''在裏面click'處理程序在計數之前獲取最新的值。現在它的方式,它只會在頁面加載時使用初始值,這將是空白的。 –

回答

2

在「就緒」初始化過程中,您的代碼僅獲取文本字段的值一次。它應該獲取「click」處理程序中的值。

將聲明text變量的行移動到按鈕的「click」處理程序的開頭。

1

你應該onClick事件處理程序移動text分配:

$('#beanbutton').click(function() { 
    var text = $('#beaninput').val(); 
    $('#beanbot').empty(); 
    $('#beanbot').append(countBeans(text) + " Beans"); 
}); 
1

你需要移動var text = $('#beaninput').val();.click功能,否則其價值將永遠0,即:

$(document).ready(function() { 
 
    function countBeans(string) { 
 
     var beanCounter = 0; 
 
     for (i = 0; i < string.length; i++) { 
 
      if (string.charAt(i) == "B") { 
 
       beanCounter += 1; 
 
      }; 
 
     }; 
 
     return beanCounter; 
 
    }; 
 
    $('#beanbutton').click(function() { 
 
     var text = $('#beaninput').val(); 
 
     $('#beanbot').empty(); 
 
     $('#beanbot').append(countBeans(text) + " Beans"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<input id="beaninput"> 
 
<button id="beanbutton"> GO </button> 
 
<p id="beanbot"></p>

1

DOM準備就緒(DOMContentLoaded)事件觸發時,輸入值爲空。
您應該在想要處理它的位置讀取值。

$(document).ready(function() { 
 
    $('#beans').on("input", function() { 
 
    var bees = this.value.match(/b/gi); 
 
    $('output').val(bees ? bees.length : 0); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="beans" /> 
 
<output></output>

該解決方案使用String.prototype.match()(正則表達式)

相關問題