Javascript在两个部分中创建元素

时间:2011-12-01 02:47:26

标签: javascript getelementbyid appendchild createelement

我想使用javascript创建一个iframe,然后将其插入两个ID为“fblike”的分区。我尝试使用以下代码,但它不起作用。

<script type="text/javascript">
  (function(){
    var fb = document.createElement('iframe');
    fb.src = 'http://www.facebook.com/plugins/like.php?href='+encodeURIComponent(location.href)+'&amp;locale=en_US&amp;send=false&amp;layout=button_count&amp;width=90&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=verdana&amp;height=21';
    fb.scrolling = 'no';
    fb.frameborder = '0';
    fb.style = 'border:none; overflow:hidden; width:90px; height:21px;';
    fb.allowTransparency = 'none';
    document.getElementsById('fblike')[0].appendChild(fb);
  })();
</script>

我知道代码中肯定存在一些错误,因为我对javascript知之甚少。任何人请帮助我!! 感谢

更新:感谢您的帮助:)我更新了代码以消除错误。现在,以下代码适用于我:

<script type="text/javascript"> 
  (function(){
    var fb = document.createElement('iframe');
    fb.src = 'http://www.facebook.com/plugins/like.php?href='+encodeURIComponent(location.href)+'&locale=en_US&send=false&layout=button_count&width=90&show_faces=false&action=like&colorscheme=light&font=verdana&height=21';
    fb.style.cssText = 'border:none; overflow:hidden; width:90px; height:21px;';
    fb.frameBorder = '0';
    fb.scrolling = 'no';
    fb.allowTransparency = 'true';
    document.getElementById('fbabove').appendChild(fb.cloneNode(true));
    document.getElementById('fbbelow').appendChild(fb.cloneNode(true));
  })();
</script>

4 个答案:

答案 0 :(得分:2)

您不应该在同一页面上具有等值的id属性。首先修复,否则document.getElementById()永远不会正常工作(它只会返回一个元素)并且document.getElementsById()(带有s)不存在。

答案 1 :(得分:1)

该函数名为document.getElementById,它返回单个元素,因为您永远不会有多个具有相同ID的元素

所以改变

document.getElementsById('fblike')[0].appendChild(fb);

document.getElementById('fblike').appendChild(fb);

答案 2 :(得分:1)

首先,你有一个类型。它的getElementById,因为在任何给定页面上只有一个元素可以有ID。

其次,因为只有一个,所以不需要[0]

document.getElementById('fblike').appendChild(fb);

但是,否则,我们需要更多细节来了解这是否是您遇到的唯一问题。

答案 3 :(得分:0)

实际上,你想将两个iframe插入两个div中,对吧?下面的代码将按照您的要求执行(不能声称它是最佳的,因为您有重复的ID - 如上所述,如果可能,您最好制作两个不同的ID):

<script type="text/javascript">
  (function(){
    var list = document.getElementsByTagName('div'), i, fb;
    for (i = 0; i < list.length; i++) {
        if (list[i].id == 'fblike') {
            fb = document.createElement('iframe');
            fb.src = 'http://www.facebook.com/plugins/like.php?href='+encodeURIComponent(location.href)+'&amp;locale=en_US&amp;send=false&amp;layout=button_count&amp;width=90&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=verdana&amp;height=21';
            fb.scrolling = 'no';
            fb.frameborder = '0';
            fb.style = 'border:none; overflow:hidden; width:90px; height:21px;';
            fb.allowTransparency = 'none';
            list[i].appendChild(fb);
        }
    }
  })();
</script>