2013-01-22 56 views
0

我想只用JavaScript來加載iframe,到目前爲止,我一直在使用這樣的:在沒有jQuery的div上加載html?

$(".punctis-social-box").html("<iframe></iframe>"); 

但因爲它是唯一的指令,我有一個使用jQuery的,我會喜歡不依賴於任何更多在jQuery上。

+0

沒有提到身體阿賈克斯... – DomingoSL

+1

@Amadan我刪除了我的評論,我顯然誤解了這個問題:) –

回答

5

也許不是最好的方式開始:

var elements = document.getElementsByClassName("punctis-social-box"); 
for (var i = 0; i < elements.length; i++) { 
    elements[i].innerHTML = "<iframe></iframe>"; 
} 

或者使用querySelectorAll

var elements = document.querySelectorAll(".punctis-social-box"); 
for (var i = 0; i < elements.length; i++) { 
    elements[i].innerHTML = "<iframe></iframe>"; 
} 

爲了避免所有陋習TM你可以使用document.createElement,而不是明確的變化內部HTML:

var element = document.querySelector(".punctis-social-box"), 
    iframe = document.createElement("iframe"); 

while (element.firstChild) {     // the fastest way 
    element.removeChild(element.firstChild); // to clear the contents 
} 
element.appendChild(iframe);     // adding new <iframe> 
+0

@PeeHaa我錯在哪裏? – VisioN

+4

@PeeHaa這不是開始的最佳方式嗎?他的回答完全有效。 –

+3

使用'innerHTML'是人們能做的最糟糕的事情之一,因爲它破壞了元素中的所有節點。也不建議在JS中編寫HTML。 – PeeHaa

4

方法1:

var social_boxes = document.getElementsByClassName('punctis-social-box'); 
social_boxes[0].innerHTML += '<iframe></iframe>'; // add to first element, loop thru "social_boxes" if you want to add iframe to all elements 

方法2(越好):

var social_boxes = document.getElementsByClassName('punctis-social-box'); 
var iframe = document.createElement('iframe'); 
social_boxes[0].appendChild(iframe); // add to first element, loop thru "social_boxes" if you want to add iframe to all elements 
+3

沒有'getByClassName'方法在JavaScript中。 – VisioN

+0

@VisioN是的,有,但它不是標準的,直到HTML5(雖然FF已經有它自第3版以來),如果你想要兼容性,你將不得不使用nastier方法。 – DaveRandom

+0

@DaveRandom我找不到任何地方... –