2

私はここに来たばかりで、自分のプロジェクトで立ち往生しています...

eコマースのカートからアイテムを除外する必要があります...

このカートは、Fancybox の iframe 内に表示されます。

機能しますが、Chrome では視覚的に機能しません。Firefox と IE では正常に動作します...

div_1、div_2、div_3 などの名前の div に項目があります。

<div id="div_1">
   content...
</div>
<div id="div_2>
   content...
</div>
<div id="div_3>
   content...
</div>

ページをスクロールするには、すべてのコンテンツをメインの div 内にスタイルで配置します。

style="overflow: hidden; width:820px; height:auto;"

スクロールは iframe(auto) とメイン div によって制御されるため、widht の値が定義されており、コンテンツに合わせて高さが auto になっています...

div 内には、製品、名前、価格からの img と、この JS を使用した削除ボタンがあります:-

onClick="removeItem(<%=arrayIndexdiv%>)"

そして機能: -

<script>
    function removeItem( itemid ) {
        document.getElementById('div_' + itemid ).innerHTML = "";
    }
</script>

言い換えれば、関数は単に div を消去し、それらをページから除外します...

リスト itens が iframe サイズよりも大きい場合、垂直スクロールバーが表示されます。

削除をクリックすると、すべてのブラウザで iten が正常に表示されなくなりますが、Chrome では iframe のサイズは変更されず、すべてのアイテムの上、フッターの前に空白ができます。

IE と Mozilla では問題ありません。スペースは表示されませんが、Chrome では表示されます...

もっと役立つ URL をここに記載してもよいかどうかわかりません。できれば教えてください!

誰でも私を助けることができますか?

私の英語でごめんなさい!

君たちありがとう!

4

2 に答える 2

2

DOMのコンテンツをオーバーライドするだけでなく、要素を削除したいと思いますdiv

プロパティはinnerHTML、要素の子孫を記述する HTML 構文を設定または取得します。あなたの場合、divコンテンツを設定しているだけです:

document.getElementById('div_' + itemid ).innerHTML = "";

から要素を削除する場合DOM:

function removeItem( itemid ) {
  var element = document.getElementById('div_' + itemid ); // will return element
  element.parentNode.removeChild(element); // will remove the element from DOM
}

またstyle="overflow: hidden; width:820px; height:auto;"、オーバーフローを非表示にしますがdiv、スクロールしません。

スクロールしたい場合は、設定できますoverflow:scroll

于 2013-09-19T03:04:48.890 に答える
1

あなたの問題は、div タグがブロック要素であるため、親 div のスペースを占有していることだと思います。そのようです:

var element = document.getElementById("div_" + itemid); 
element.parentNode.removeChild(element);

また、このアクションは jquery では少しすっきりしています。さらなる DOM 操作について調べることができます。

于 2013-09-19T02:35:03.050 に答える