3

新しいユーザーと最初の質問..入れ子になった each() を使用して XML 文字列を解析します。探しているノードを見つけてプロパティの値を変更しましたが、元の xml 文字列は変更されません。

以下の XML と JQuery。コード内のアラートを探して、更新が行われる場所を確認します。とにかく、すべての eachs が再生された後、元の xml 文字列はそのままですか? 私は何を間違っていますか?

ありがとう

XML:

<Test TestID="712" UserID="1231230192831039812">
  <Question id="713">
    <AnswerSet id="718" type="5">
      <AnswerSetOption id="740"  IsChecked="Foo" />
      <AnswerSetOption id="741"  IsChecked="Foo" />
      <AnswerSetOption id="742"  IsChecked="Foo" />
    </AnswerSet>
  <AnswerSet id="719" type="5">
    <AnswerSetOption id="740"  IsChecked="Foo" />
    <AnswerSetOption id="741"  IsChecked="Foo" />
    <AnswerSetOption id="742"  IsChecked="Foo" />
  </AnswerSet>
  <AnswerSet id="720" type="5">
    <AnswerSetOption id="740"  IsChecked="Foo" />
    <AnswerSetOption id="741"  IsChecked="Foo" />
    <AnswerSetOption id="742"  IsChecked="Foo" />
  </AnswerSet>
 </Question>
</Test>

スクリプト:

    function TrackResponse(QuestionID, AnswerSetID, AnswerSetOptionID, InputType) {

        var xml;

        xml = $('#_uiCheckingAnswersHidden').val();

        $(xml).find('Question').each(function () {

            var xmlQuestionID = $(this).attr('id');

            $(this).find('AnswerSet').each(function () {

                var xmlAnswerSetID = $(this).attr('id');

                $(this).find('AnswerSetOption').each(function () {

                    var xmlAnswerSetOptionID = $(this).attr('ID');
                    var checkedValue = $(this).attr('IsChecked');


                    if (InputType == 'radio') {

                        if (QuestionID == xmlQuestionID && AnswerSetID == xmlAnswerSetID && AnswerSetOptionID == xmlAnswerSetOptionID) {

                            alert('Found it');

                            var oldValue;

                            oldValue = $(this).attr('IsChecked');

                            alert('Old value: ' + oldValue)

                            $(this).attr('IsChecked', 'Bar');

                            var newValue;

                            newValue  = $(this).attr('IsChecked');

                            alert('New value: ' + newValue)

                        }
                        else {
                            $(this).attr('IsChecked', 'pp');
                        }
                    }

                    //Checkbox -- if not found updated Checked Attribute to ''
                    if (InputType == 'check') {

                        var checked = $(this).attr('IsChecked');

                        if (QuestionID == xmlQuestionID && AnswerSetID == xmlAnswerSetID && AnswerSetOptionID == xmlAnswerSetOptionID) {

                            if (checked == 'true') {
                                $(this).attr('IsChecked', 'dd');
                            }
                            else {
                                $(this).attr('IsChecked', '');
                            }
                        }
                    }
                });
            });
        });

        alert(xml);
    }
4

1 に答える 1

0

前述のすべてを実行して参照によって元の DOM 要素にアクセスするか、現在のコンテンツに XML コンテンツを .html(xml) などで置き換えるか追加するだけです。

于 2013-09-17T03:40:11.957 に答える