2014-06-17 30 views
0

好吧,所以我試圖做某種num_pad,當我click其中一個buttons(0-9),我的displayBox顯示一個未定義的值,而不是選定的數字。試圖讀取跨度標籤之間的值,進入輸入框。獲取一個undefined onclick的值

<head> 
    <script language="javascript" type="text/javascript"> 
      function getValue() { 
      var display = document.getElementById('displayBox').value += document.getElementsByTagName('span').innerHTML; 
     } 
     </script> 
     </head> 
     <body> 

      <div class="display"> 
       <input type="text" id="displayBox"><br /> 
      </div> 
      <div id="numbers" style="line-height: 55px;"> 
       <span onclick="getValue(this)">1</span> 
       <span onclick="getValue(this)">2</span> 
       <span onclick="getValue(this)">3</span> 

      </div> 

    </body> 

回答

0
document.getElementsByTagName() 

將返回匹配的,你必須使用索引以訪問元件的陣列。

嘗試

function getValue(elm) { //elm referes to the <span> which is clicked 
var display = document.getElementById('displayBox').value += elm.innerHTML; 
} 

代替。

JSfiddle

0

看看這段代碼 - >Demo

你傳遞一個元素,你的函數 - >getValue(this),但你的getValue函數function getValue()接收沒有參數。

將其更改爲getValue(el) < - el是正在傳遞的元素。

function getValue(el) { 

    var display = document.getElementById('displayBox').value = el.innerHTML; 

} 

此外,document.getElementsByTagName(tagname)返回找到元素的HTML Collection。要訪問任何找到的元素,您必須使用索引 - >document.getElementsByTagName(tagname)[0] < - [0]指的是HTML Collection的第一個元素。 Source