남자 - 여기서 코드가 왜 파손되는지 알 수 없으며 이유를 알아 내는데 도움이 필요합니다! 아래에서 볼 수있는 함수는 웹 서비스에서 행을 가져오고 반환되는 데이터를 기반으로 테이블 행을 작성합니다. 당신이 볼 수는 2를 표시해야 할 때주석 코드가 이전 코드의 동작을 바꿉니다.
function GetData(id, thisRow) {
if (id == 0) {
var tier = 0;
}
else {
var currenttier = parseInt(thisRow.find("td.Tier").text());
var tier = currenttier + 1;
}
//*** this console.log is affected by the for loop that appears later..
console.log(tier);
$.ajax({
type: "POST",
url: "F2.svc/GetChildTable",
data: id,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data, textStatus, xhr) {
var tempstring = "";
var temp = "";
if (data.Rows.length > 0) {
for (var i = 0; i < data.Rows.length; i++) {
tempstring += "<tr class = 'Show Row ItemID-" + data.Rows[i].ItemID + " ParentID-" + data.Rows[i].ItemParentID + " Tier-" + tier + "'>";
tempstring += "<td class='Tier'>";
//*** the loop below seems to break the tier variable declared up above..
for (var p = 0; p < tier; p++) {
tempstring += "+";
}
tempstring += " " + tier;
tempstring += "</td>";
tempstring += "<td class='ItemID'>";
tempstring += data.Rows[i].ItemID;
tempstring += "</td>";
tempstring += "<td class='ItemParentID'>";
tempstring += data.Rows[i].ItemParentID;
tempstring += "</td>";
tempstring += "<td class='ItemDateEntered'>";
tempstring += data.Rows[i].ItemDateEntered;
tempstring += "</td>";
tempstring += "<td class='ItemLastUpdated'>";
tempstring += data.Rows[i].ItemLastUpdated;
tempstring += "</td>";
tempstring += "<td class='ItemName'>";
tempstring += data.Rows[i].ItemName;
tempstring += "</td>";
tempstring += "<td class='ItemStatusID'>";
tempstring += data.Rows[i].ItemStatusID;
tempstring += "</td>";
tempstring += "<td class='ItemTasks'>";
tempstring += data.Rows[i].ItemTasks;
tempstring += "</td>";
tempstring += "<td class='ItemBlocks'>";
tempstring += data.Rows[i].ItemBlocks;
tempstring += "</td>";
tempstring += "<td class='ItemComments'>";
tempstring += data.Rows[i].ItemComments;
tempstring += "</td>";
tempstring += "<td class='ItemFilterID'>";
tempstring += data.Rows[i].ItemFilterID;
tempstring += "</td>";
tempstring += "<td class='ItemManHoursEst'>";
tempstring += data.Rows[i].ItemManHoursEst;
tempstring += "</td>";
tempstring += "<td class='ItemManHoursAct'>";
tempstring += data.Rows[i].ItemManHoursAct;
tempstring += "</td><td></td>"
}
tempstring += "</tr>";
var newRow = $(tempstring);
if (id == 0) {
$("table#Main > tbody").html(newRow);
}
else {
thisRow.after(newRow);
thisRow.addClass("ChildrenLoaded");
}
}
},
error: function (xhr, textStatus, ex) {
var response = xhr.responseText;
if (response.length > 11 && response.substr(0, 11) === '{"Message":' &&
response.charAt(response.length - 1) === '}') {
var exInfo = JSON.parse(xhr.responseText);
var text = "Message: " + exInfo.Message + "\r\n" +
"Exception: " + exInfo.ExceptionType; // + exInfo.StackTrace;
alert(text);
} else {
alert("error");
}
}
});
}
는 그래서,을 console.log (계층) 정말로 이상한 것은 NaN의 표시 나 주석 경우 포함 루프 tempstring + = 그 "+"; console.log는 예상대로 작동합니다. 내가 볼 수있는 유일한 관계는 for 루프가 p < 계층을 사용하지만 이전에 계층 변수 선언에 영향을 미치지 않아야한다는 것입니다.
오, 나는 tempstring + = ""+ tier; 너무 깨졌습니다 ^^
고마워요!
Ah! 고마워, 그 트릭을해야 고정! – Robodude