2017-10-10 60 views
0

我試圖添加一個畫布孩子到我的div與bb項目類。試圖添加孩子div類

這是我目前的代碼。

var createImage = function(w, h) { 
 
    var i = document.createElement("canvas"); 
 
    i.width = w; 
 
    i.height = h; 
 
    i.ctx = i.getContext("2d"); 
 
    return i; 
 
} 
 
var canvas = createImage(1024, 512); 
 
var ctx = canvas.ctx; 
 
document.getElementsByClassName('bb-item').appendChild(canvas);
<div class="bb-item cover"> 
 
    <canvas></canvas> 
 
</div>

+0

使用此代碼時會出現什麼問題或錯誤? –

+0

你的問題很模糊。你能否提供更多細節?比如你遇到了什麼錯誤,並且可能需要一個你想要實現的HTML代碼片段? – SteppingHat

+0

我有一個用於移動腳印的JavaScript代碼,即時嘗試將此腳本放在div class bb-item下。目前我的腳本不在bb-item下的中運行。此代碼工作時,我有 document.body.appendChild(canvas); 這裏的問題是帆布放置在不是我想要的身體元素。 – Peterssoen

回答

2

這是因爲當您使用document.getElementsByClassName,它返回一個收集 DOM節點(即使只有一個單一的元素,選擇相匹配):

返回一個類似數組的對象的所有子元素都具有所有給定的類名稱。

這意味着你要麼必須

  • 集合中選擇的第一要素,如果你確定你只想與集合,即在第一個元件的作用:

    document.getElementsByClassName('bb-item')[0].appendChild(canvas); 
    
  • 或者,如果你想同樣的方法適用於集合中的所有元素中,通過收集應用.appendChild()方法N前迭代:

    var bbItems = document.getElementsByClassName('bb-item'); 
    
    for (var i = 0; i < bbItems.length; i++) { 
        var bbItem = bbItems[i]; 
        bbItem.appendChild(canvas); 
    } 
    
0

替換此聲明:

document.getElementsByClassName('bb-item').appendChild(canvas); 

與此:

document.getElementsByClassName('bb-item')[0].appendChild(canvas); 

var createImage = function(w, h) { 
 
    var i = document.createElement("canvas"); 
 
    i.width = w; 
 
    i.height = h; 
 
    i.ctx = i.getContext("2d"); 
 
    return i; 
 
} 
 
var canvas = createImage(1024, 512); 
 
var ctx = canvas.ctx; 
 
document.getElementsByClassName('bb-item')[0].appendChild(canvas);
.bb-item{ 
 
    min-height: 400px; 
 
    background-color: yellow; 
 
} 
 

 
canvas{ 
 
    background-color: white; 
 
}
<div class="bb-item cover"> 
 
    <canvas></canvas> 
 
</div>