15

divユーザーがリンクをクリックしたときに表示したい絶対位置があります。リンクのonclickは、div の表示をブロックに設定する js 関数を呼び出します (「」、、、、なども試しましinlinetable-cell) inline-table。これは IE7 ではうまく機能しますが、私が試した他のすべてのブラウザー (FF2、FF3、Opera 9.5、Safari) ではまったく機能しません。

通話の前後にアラートを追加しようとしましたが、表示が からnoneに変わったことが表示されますblockが、は表示されdivません。

FirebugのHTMLインスペクターを使用して表示値を変更すると(ただし、Firebugのコンソールからjavascriptを実行することはできませんdiv)、FF3で表示することができます-画面外に表示されるだけではないことがわかります。

以下を含め、考えられるすべてのことを試しました。

  • 別の doctype (XHTML 1、HTML 4 など) を使用する
  • display block/none の代わりに、visible/hidden の可視性を使用する
  • 関数呼び出しの代わりにインライン JavaScript を使用する
  • 異なるマシンからのテスト

これを引き起こす原因についてのアイデアはありますか?

4

9 に答える 9

7

エラーを再現するマークアップを提供できますか?

これをIE、FF3、およびOpera 9.5で動作させることができるので、あなたの状況はあなたのコードに関係しているに違いありません:

function show() {
  var d = document.getElementById('testdiv');
  d.style.display = 'block';
}
#testdiv {
  position: absolute;
  height: 20px;
  width: 20px; 
  display: none;
  background-color: red;
}
<div id="testdiv"></div>
<a href="javascript:show();">Click me</a>

于 2008-08-13T21:10:41.933 に答える
7

javascript を使用したプロパティの設定は機能していないように見えましたが、Firebug の inspect を使用した設定は機能したため、javascript ID セレクターが壊れているのではないかと疑い始めました。ソースは存在することを示していませんでしたが、javascript を使用してすべての div をループすると、そうであることがわかりました。ポップアップを表示するために使用した関数は次のとおりです。

function openPopup(popupID)
{
  var divs = getObjectsByTagAndClass('div','popupDiv');
  if (divs != undefined && divs != null)
  {
    for (var i = 0; i < divs.length; i++)
    {
      if (divs[i].id == popupID)
        divs[i].style.display = 'block';        
    }
  }
}

(ユーティリティ関数 getObjectsByTagAndClass はリストされていません)

理想的には、同じアイテムが複数回挿入されている理由を突き止めますが、レンダリング プラットフォームを制御することはできず、その入力のみを制御できます。

したがって、このような問題をデバッグするときは、DOM で重複した ID がないか確認してください。これにより、 getElementById が壊れる可能性があります

答えてくれたみんな、助けてくれてありがとう!

于 2008-08-14T15:23:10.273 に答える
5

答えが見つかりました:両方のブラウザで動作させるには、次を使用する必要があります:

document.getElementById('editRow').style.display = '';
于 2009-05-29T16:55:29.210 に答える
2

実際、私はあなたがここで説明しているのと同じ問題を経験していました。私の問題を実際に修正したのは、ドキュメントのプロパティを変更することでした。

古い DOCTYPE/html 仕様

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

交換された

<html>
于 2011-04-18T16:12:45.880 に答える
1

メソッドを書く必要がありますwindow.onload:

window.onload = document.getElementById('testdiv').style.display='inline';

または、変数を作成することもできます。

var d = document.getElementById('testdiv');
window.onload = d.style.display = 'inline';
于 2011-08-05T06:23:51.233 に答える
1

エラー コンソール (Firefox 3 では [ツール メニュー] > [エラー コンソール]) をチェックして、スクリプトの動作を停止している、表示されていない別のエラーが発生していないことを確認します。

于 2008-08-13T21:05:23.100 に答える
1

div の高さと幅を設定してみてください。その z-index を他のすべてよりも高く設定して、div が一番上にあることを確認してください。絶対配置された div が相対的に配置された要素内にある場合、その上と左の位置は、相対的に配置された要素の上と左に基づいています。body 要素のすぐ下に div を配置してみてください。

于 2008-08-13T23:36:09.770 に答える
0

Firefox 3.5 では表示エラーが発生するが、IE7 や Firefox 2.0.9 では発生しない

私は3つのDIVの絶対位置を持っています.1つはプレーンテキストです。2 番目は CSS メニュー (UL と LI を使用したサックルフィッシュ タイプ) で、3 番目は同上です。3 番目のコードは、コーディングがチェックされ、W3C の HTML バリデーターで完全であることが確認されたにもかかわらず、まったく表示されません。

一時的な措置として、2 番目と 3 番目の DIV のコンテンツをマージしました。

IE7 と FF2 では問題なく表示されるが FF 3.5 では表示されない場合、Mozilla では問題が発生しているに違いありません

于 2009-11-21T21:10:04.920 に答える