0

4 つの色付きの div を含む長いバーである jQuery を使用して Web サイト コントロールを作成しました。ユーザーは 2 つの div 間の結合をドラッグして、バー全体の範囲内でサイズを変更できます (バー全体の幅は変わりません)。さらに、ユーザーは任意の div を削除/置換できますが、そのままにしておく必要があります。

私のコンピューターでデバッグすると、完全に機能していました。今、私はそれをホストしており、jQuery がいくつかの値を矛盾して報告していることを発見しています - 具体的にはelement.css('left')element.width(). 値をコンソールに出力するように設定し、ページを繰り返し更新すると、値が設定されleftていない要素から読み取ると NaN が返される場合があり、0 が返される場合があります。それは0です。

もう一つはwidth. スライダーの固定幅を決定する内部 div をラップする div があります。現在は 1000px に設定されています。これは、js ファイルのにリンクされた css スタイルシートで設定されます。ページ読み込みコード ( $(function(){})) で、この幅の値が照会され、1000px と報告されることもありますが、1887px と報告されることもあります?? これには韻や理由はないようです-私の仮定は、レンダリングエンジンによって設定される前に幅が読み取られる競合状態であるということですか?? 誰かがこれを確認/拒否できますか、またはDOMでオブジェクト/プロパティが利用可能になる順序の概要を教えてもらえますか? コードを $(function()) に入れることで、ドキュメントがすべて読み込まれると思っていました...

ウィジェットはこちらからご覧いただけます

PS:他の場所で使用するウィジェット コードのコピーが必要な場合は、お知らせください。提供させていただきます :-)

編集:クリックしてドラッグし、マウス ホイールをスクロールすると、微調整のためにバリアが上下にわずかに微調整される追加機能があります。正しい数値を報告するのではなく、移動せずに NaN を表示するだけであることがわかりました。私のローカルネットワークでは、これは正常に機能します(ホストされているファイルと同じですが、インターネットではなくネットワーク経由で提供されます)。何らかの理由で、値を解析する行は単に NaN を返します。parseFloat($('#ICDM').children('.slider').children('.b1').attr('data-high'))

ネットワーク上では解析するのに、インターネット経由では解析しない理由がわかりません!! 誰かが解決策または代替手段を持っていますか?

4

2 に答える 2

1

css プロパティと DOM オブジェクト プロパティを混同していると思います。" "に CSS 値がないからといって、ボックス要素に " " プロパティleftがないわけではありません。left言い換えると:

与えられた:

<div>Auto Box</div>

CSS property "left": undefined (or NaN if you parse it)

Box property "div.left": some value according to layout and position on screen.

幅、高さなどと同じです。

css プロパティ " left" を値に設定すると、その位置が強制され、実際にはそれ以上の位置はありませんが、要素が実際に「その位置」にあるとは限りません。これは cssプロパティの値にNaN依存するためです。positionなどなど...

于 2013-07-13T02:49:39.610 に答える