2017-03-13 95 views
1

所以我有一些問題。我正在嘗試做一個函數:人類用鼠標點擊輸入框,然後輸入一些隨機數字,這個數字應該被轉換並顯示在另外兩個盒子裏,比如MegaBytes和KiloBytes。所以我的問題是,使用Javascript顯示我的錯誤:javaScript被卡住轉換字節

無法設置屬性爲NULL轉換
的 '價值'(的script.js:7)
在HTMLInputElement.onkeyup

這裏是我的到目前爲止的代碼:

function convert(inputas) 
{ 
    var i; 
    if(inputas == "B") 
    { 
     i = document.getElementById("baitas").value/1000; 
     document.getElementById("kiloBaitas").value = i; 
    } 
    else if(inputas == "KB") 
    { 
     i = document.getElementById("kiloBaitas").value * 1024; 
     document.getElementById("baitas").value = i.toFixed(2); 
    } 
} 

HTML代碼:

<input type="text" id="baitas" onkeyup="convert('B')placeholder="Bits"> 
<input type="text" id="kilobaitas"  
`onkeyup="convert('KB')"placeholder="Kilobits"> 
<input type="text" id="megabaitas" onkeyup="convert('MB')" 
placeholder="Mbits"> 
<script src="script.js"></script> 
+1

哪裏是你的HTML代碼? –

+0

當這個腳本運行時,在ID爲'kiloBaitas'或'baitas'的文檔中不存在任何元素(取決於'inputas'的值) – Phil

+0

@Kinduser我在上面添加了我的html代碼,也許這會有所幫助 – Lucas

回答

1

當您的JavaScript與HTML比較。 kilobaitis元素不拼寫一致的情況。

+0

耶穌,隊友.....謝謝你:我怎麼沒有注意到...... – Lucas

1

JavaScript是區分大小寫

function convert(inputas) { 
 
    var i; 
 
    if (inputas == "B") { 
 
    i = document.getElementById("baitas").value/1000; 
 
    document.getElementById("kilobaitas").value = i; 
 
    } else if (inputas == "KB") { 
 
    i = document.getElementById("kiloBaitas").value * 1024; 
 
    document.getElementById("baitas").value = i.toFixed(2); 
 
    } 
 
}
<input type="text" id="baitas" onkeyup="convert('B')" placeholder=" Bits "> 
 
<input type="text " id="kilobaitas" onkeyup="convert('KB')" placeholder="Kilobits "> 
 
<input type="text " id="megabaitas" onkeyup="convert('MB')" placeholder="Mbits ">

+0

是的,隊友剛剛看到它,過了很長時間12h,我是這樣一個睡美人,我沒注意到我的拼寫錯誤,謝謝你,夥計:) – Lucas

+0

cha ..你也是,哥們;) – Lucas

0

(function() { 
 

 
var elems = [], 
 
    elemsId = ['baitas','kilobaitas','megabaitas']; 
 

 
function fix(a){ return (a * 100 | 0)/100 } 
 

 
function convert(inputas) 
 
{ 
 
    var i; 
 
    switch(inputas) 
 
    { 
 
     case 0: 
 
      i = elems[0].value; 
 
      elems[1].value = fix(i/1024); 
 
      elems[2].value = fix(i/1048576); 
 
      break; 
 
     case 1: 
 
      i = elems[1].value; 
 
      elems[0].value = i * 1024; 
 
      elems[2].value = fix(i/1024); 
 
      break; 
 
     case 2: 
 
      i = elems[2].value; 
 
      elems[0].value = i * 1048576; 
 
      elems[1].value = i * 1024; 
 
      break; 
 
    } 
 
} 
 

 
for (var i=0; i < elemsId.length; i++) 
 
{ 
 
    elems[i] = document.getElementById(elemsId[i]); 
 
    elems[i].addEventListener('keyup', convert.bind(null, i)) 
 
} 
 

 
}());
<input type="text" id="baitas" placeholder=" Bits"> 
 
<input type="text" id="kilobaitas" placeholder=" Kilobits"> 
 
<input type="text" id="megabaitas" placeholder=" Mbits">