2015-12-10 28 views
0

我有4個按鈕,創建於js對象4按鈕中的對象,但它沒有顯示,創建與JavaScript的

這是我的代碼:

function Keyboard() { 
    this.plus = document.createElement("input"); 
    this.plus.type = "submit"; 
    this.plus.value = "A"; 
    this.minus = document.createElement("input"); 
    this.minus.type = "submit"; 
    this.minus.value = "B"; 
    this.multi = document.createElement("input"); 
    this.multi.type = "submit"; 
    this.multi.value = "C"; 
    this.divide = document.createElement("input"); 
    this.divide.type = "submit"; 
    this.divide.value = "D"; 

} 
var k = new Keyboard(); 
document.body.appendChild(k); 

我將在以後添加的onClick,但爲什麼沒有顯示? 謝謝!

+0

你有沒有看看你的控制檯的錯誤? – TrojanMorse

+0

什麼是'k'包含?console和show? –

+0

我的控制檯上沒有錯誤。這就是k所包含的內容。也許我沒有正確創建一個對象我不確定我是不是很新的js – Mumfordwiz

回答

1

您的Keyboard構造一個簡單的JavaScript對象,其中包含4個屬性,但不包含DOM對象。稍後,您嘗試將一個簡單的JavaScript對象附加到文檔中。

第一個,您需要使用document.createElement創建DOM元素。
第二個,你根本就不需要new關鍵字。
第三個,你不需要設置子屬性作爲屬性。您將它們追加到父對象,這就夠了。

試試下面的代碼:

function CreateKeyboard() { 
 
    var t = document.createElement("div"); 
 

 
    var plus = document.createElement("input"); 
 
    plus.type = "submit"; 
 
    plus.value = "A"; 
 
    t.appendChild(plus); 
 

 
    var minus = document.createElement("input"); 
 
    minus.type = "submit"; 
 
    minus.value = "B"; 
 
    t.appendChild(minus); 
 

 
    var multi = document.createElement("input"); 
 
    multi.type = "submit"; 
 
    multi.value = "C"; 
 
    t.appendChild(multi); 
 

 
    var divide = document.createElement("input"); 
 
    divide.type = "submit"; 
 
    divide.value = "D"; 
 
    t.appendChild(divide); 
 

 
    return t; 
 
} 
 

 
document.body.appendChild(CreateKeyboard());

順便問一下,你能避免重複的代碼。例如,通過利用Array.prototype.forEach

function CreateKeyboard() { 
 
    var t = document.createElement("div"); 
 

 
    ['A', 'B', 'C', 'D'].forEach(function(l) { 
 
     var elem = document.createElement("input"); 
 
     elem.type = "submit"; 
 
     elem.value = l; 
 
     t.appendChild(elem); 
 
    }); 
 

 
    return t; 
 
} 
 

 
document.body.appendChild(CreateKeyboard());

0

這應該工作:

<script type="text/javascript"> 
    function createSubmitButton(val) { 
     var el = document.createElement("input"); 
     el.type = "submit"; 
     el.value = val; 
     document.body.appendChild(el); 
    } 
    createSubmitButton("A"); 
    createSubmitButton("B"); 
    createSubmitButton("C"); 
    createSubmitButton("D"); 
    </script> 

確保您將腳本標記在HTML代碼的底部,結束標記前面的權利。

0

k不是類型的節點。僅附加您創建的節點元素。

var k = new Keyboard(); 
document.body.appendChild(k.plus); 
document.body.appendChild(k.minus); 
document.body.appendChild(k.multi); 
document.body.appendChild(k.divide);