0
我有一個Jquery腳本,用於加載XML文件並將內容吐出。不過,我想將這些內容格式化爲一個表格,每行3列。目前,它使得一行很長,我還沒有發現任何關於在.each加載了幾個項目之後調用新函數的谷歌。每次調用一個新函數。每個函數執行3個循環
要重申,我想如果(hideproduct == 「」){}已成功實施3次後執行功能NEWROW()。
var product_xml = "xml/products_loaded.xml"
function xmlParser() {
$.ajax({
type: "GET",
url: product_xml,
dataType: "xml",
success: function(xml) {
function newrow(){
$("#output").append("</tr><tr>")
}
$(xml).find("SAVED_EXPORT").each(function(){
var productcode = $(this).find("productcode").text()
var productname = $(this).find("productname").text()
var productprice = $(this).find("productprice").text()
var hideproduct = $(this).find("hideproduct").text()
if(hideproduct == ""){
$("#output").append("<td class='product' id='" + productcode + "'>"
+ "<a href='/i/" + productcode + ".htm' title='" + productname + ", " + productcode + "'>" + productname + "</a><br>"
+ "<span><font class='text colors_text'><b><span class='price'>Our Price</span>: </b></font> $" + productprice + "</span><br>"
+ "<img src='/v/vspfiles/photos/" + productcode + "-1.jpg' border='0' alt='" + productname + "'>"
+ "</td>");;
}
})
}
})
}
在此先感謝任何有關如何解決此問題的想法的人。
您正在追加破碎的標記'$(「#output」)。append(「
回答
關鍵的是,你需要一個計數器變量
.each
外存儲狀態:,因爲你不能使用本地
var
聲明內的.each
回調函數存儲狀態變量。然後,
if (hideproduct ...)
塊內,指望它被稱爲次數:,並在必要時,調用函數
碰巧你
newRow()
功能無論如何不會工作,因爲您不能使用.append
創建不平衡的HTML標籤。一個更好的解決辦法是:
注意如何在新的
<tr>
只在必要時創建,然後在你的<td>
元素的新內容直接添加到這一點,不要#output
。來源
2012-09-22 07:58:53 Alnitak
謝謝你這個很詳細的帖子。我得到它的工作! –
@JackCole不要忘記註冊並接受! – Alnitak
@JackCole我剛剛注意到'if(tr === null)'測試需要放在'if(hideproduct ===「」)'測試中,並相應地更新了代碼。 – Alnitak
這是怎麼回事?
我不確定你想要測試「3測試」的確切位置,但你明白了!基本上,i%3 == 0測試將檢查我是否是3(0,3,6,9 ...)的倍數。
來源
2012-09-22 08:00:17 mbinette
相關問題