2013-01-22 32 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我找不到任何地方... –