3

誰かが私を助けてくれることを望んでいるjQueryから気が遠くなるような応答を受け取っています。単純な問題があります...HTMLフォームの非表示フィールドの「値」を設定しています(<input type='hidden'>フォームが読み込まれるとき。3つの非表示フィールドを持つフォームがあり、2つは正常に機能しています。3番目...ここに問題があります:

フォームの読み込みが完了すると(はい、読み込まれて表示されます...前の2つの非表示フィールドが読み込まれ、jQueryによって正常に設定された間接的な証拠として)、次のコードを実行します(この最後のフィールドとして関連するスニペットを表示するだけです) 「今日」に設定された日付です):

case "today":
    SetFieldValue (targetElement , Date.today().toString("yyyy-MM-dd HH:mm:ss") );
    console.log ('Setting ' + jQuery(targetElement).attr('id') + ' to "today": ' + Date.today().toString("yyyy-MM-dd HH:mm:ss") );
    break;

SetFieldValueは、タイプに関係なくDOM要素を設定できるようにするために作成した小さな関数です。コードは次のとおりです。

function SetFieldValue ( domObject, value ) {
  // as a safety function, check if a string representation of the domObject was passed in and convert it to a jQuery object if it was
  if ( jQuery.type(domObject) === "string") {
    domObject = jQuery(domObject);
  }

  if ( jQuery.inArray (domObject.prop('tagName').toLowerCase(),['input' , 'select' , 'textarea']) >= 0 ) {
    console.log ("setting to value attribute: " + value);
    domObject.attr('value',value);
    console.log ("now set to: " + domObject.attr('value') + "(" + domObject.attr('id') + ")" );
  } else {
    console.log ("setting to html attribute");
    domObject.html( value );
  }
  return domObject;
}

これは問題の狂気を理解する上で重要であるため、console.logメッセージに注意してください。これを実行すると、コンソールに表示される内容は次のとおりです。

ここに画像の説明を入力してください

ここで、「today」caseステートメントの最後の行(別名「break;」行)にブレークポイントを設定します。コンソールメッセージに基づいて、すべてが順調です。DOM要素#activity-start_timeが設定されているようです。さて、ここでそれは奇妙になります。

私が最初に行うことは「targetElement」への参照をテストすることであり、デバッガーコンソールが最初に提供するのは空の配列です。

空集合

何?それはかなり奇妙です。数秒が経過すると、突然、期待どおりに解決されることを考えています(コンソールに再入力しないで、空のセットから下に表示されているものに変更するだけです)。

そして今、完全に異なる何かのために

targetElementが期待どおりになっているので、jQueryを使用して、#activity-start_timeのDOM要素が同じ値を報告していることを簡単に確認します。上記の結果を見ることができます。値を取得していないことを除けば、targetElementとまったく同じです。何?!?

私は完全に途方に暮れています。どんな助けでも大歓迎です。

ケン

ps他の人が.attrの代わりに.propを使用することを提案していることに注意します。どちらもまったく同じように動作するようです。

4

1 に答える 1

0

人々がこの問題を実際に掘り下げるのに十分なコンテキストを提供しなかったことはわかっていますが、最終的には解決しました。問題は何でしたか?それは本当にばかげていました...いつもではありませんか?とにかく、質問の 'id' が一意ではない DOM 要素のケースにすぎません。うーん。トラブルに巻き込まれるのは、見落としがちな明らかなことです。

とにかく、あなたの忍耐と助けに感謝します。

于 2012-12-04T16:36:56.797 に答える