0

javascript を使用して iframe を作成し、それを「fblike」という ID を持つ 2 つの部門に挿入したいと考えています。次のコードを使用しようとしましたが、うまくいきませんでした。

<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

4 に答える 4

2

id同じページに同じ値を持つ属性を設定しないでください。最初にそれを修正してください。そうしないdocument.getElementById()と、正しく動作しなくなり (1 つの要素しか返されません)、document.getElementsById()( を使用してs) が存在しません。

于 2011-12-01T02:50:35.520 に答える
1

同じ ID を持つ複数の要素を持つことはできないため、関数が呼び出され、単一のdocument.getElementById要素が返されます。

だから変える

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

document.getElementById('fblike').appendChild(fb);
于 2011-12-01T02:50:05.733 に答える
1

まず、タイプがあります。getElementById特定のページで ID を持つことができるのは 1 つの要素だけであるためです。

次に、1 つしかないため、. は必要ありません[0]

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

ただし、それ以外の場合は、これが唯一の問題であるかどうかを知るために、より詳細な情報が必要です.

于 2011-12-01T02:50:48.790 に答える
0

実際には、2 つの iframe を 2 つの div に挿入したいと思いますよね? これはあなたが望むことをするコードです(IDが重複しているため、最適であるとは言えません-上記の人々が言うように、可能であれば2つの異なる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>
于 2011-12-01T03:04:08.447 に答える