我使用JavScript和jQuery來讀取XML文檔並隨後使用XML中的信息創建HTML對象。不確定如何設計使用XML創建HTML對象的JavaScript/jQuery功能
XML文檔中的主'C'節點都有一個type屬性,根據類型我想運行一個函數,該函數將使用分配給該特定'C'節點的其他屬性創建一個新的html對象節點。
目前,我有一個for
循環,它從XML中提取每個「C」節點,也是屬性(例如寬度,高度,x,y)。
同樣在for
循環中,我有一個if
語句,它檢查正在處理的當前'C'節點的'type'屬性,並根據類型運行不同的函數,然後創建一個新的HTML對象與從XML中繪製的屬性。
問題是可能有多個相同類型的'C'節點,所以例如當我創建的函數將在'type = 1'的'C'節點被檢測到時運行,我不能使用'var p = document.createElement('p')
',因爲如果在循環的稍後出現相同類型的'C'節點,它將衝突並用剛剛創建的變量覆蓋該元素。
我不太確定如何解決這個問題?
這是我的整個腳本。如果你需要我詳細說明任何部件請問,我敢肯定,它不是寫在最好的可能的方式:
var arrayIds = new Array();
$(document).ready(function(){
$.ajax({
type: "GET",
url: "question.xml",
dataType: "xml",
success: function(xml)
{
$(xml).find("C").each(function(){
arrayIds.push($(this).attr('ID'));
});
var svgTag = document.createElement('SVG');
// Create question type objects
function ctyp3(x,y,width,height,baC)
{
alert('test');
var r = document.createElement('rect');
r.x = x;
r.y = y;
r.width = width;
r.height = height;
r.fillcolor = baC;
svgTag.appendChild(r);
}
// Extract question data from XML
var questions = [];
for (j=0; j<arrayIds.length; j++)
{
$(xml).find("C[ID='" + arrayIds[j] + "']").each(function(){
// pass values
questions[j] = {
typ: $(this).attr('typ'),
width: $(this).find("I").attr('wid'),
height: $(this).find("I").attr('hei'),
x: $(this).find("I").attr('x'),
y: $(this).find("I").attr('x'),
baC: $(this).find("I").attr('baC'),
boC: $(this).find("I").attr('boC'),
boW: $(this).find("I").attr('boW')
}
alert($(this).attr('typ'));
if ($(this).attr('typ') == '3')
{
ctyp3(x,y,width,height,baC);
// alert('pass');
} else {
// Add here
// alert('fail');
}
});
}
}
});
});
你能發表你的代碼的例子嗎? – 2010-06-03 14:17:48