3
新用戶和第一個問題.. 我通過嵌套each()s解析XML字符串。我找到了我正在查找的節點並更改了該屬性的值,但原來的xml字符串保持不變。JQuery - 使用嵌套的each()來更新XML字符串。原始字符串未更新
下面是XML和JQuery。查看代碼中的警報以查看更新發生的位置。無論如何,在所有的每個人已經發揮出原來的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);
}
當您調用'$(xml)'時,您將創建一個新的jQuery對象,其中包含'xml'字符串中定義的節點;現在兩人完全沒有聯繫。如果你想獲得一個新的XML字符串來表示已更改的狀態,則需要從該對象中獲取它。 –
謝謝安東尼。所以我將不得不再次加入所有節點並重新創建xml以獲取更新的值?有沒有簡單的方法來加入所有的節點,或者我必須創建具有更新屬性值的原始XML格式? – FredThunder
我將存儲對通過調用'$(xml)'創建的jQuery對象的引用,因爲這會反映後面的更改(假設您使用該變量代替當前代碼中的任何'$(xml)'調用) 。在這裏有一些關於從一個jQuery對象獲取XML字符串的問題,所以請搜索其中的一個。 –