방금이 기능이 작동했습니다. 그러나 if/else의 다른 부분을 가져 오는 몇 가지 사소한 편집을 마친 후 일부는 마술처럼 작동하지 않습니다.javascript 함수의 특정 줄이 작동하지 않습니다.
json 요청의 콜백 함수에서 네 개의 for 루프가 모두 실행되지만 실제로 DOM 조작이 수행되지 않습니다. 나는 이것이 발생하기 위해 적절한 DOM 요소가 존재 하는지를 세 번 확인했다. 모든 사람들에게 경고가 발령됩니다. jQuery 라인 만 실패합니다.
관련 변수를 콘솔에 넣고 수동으로 루프를 시뮬레이트하기 위해 숫자를 반복 해 보았습니다. 이것은 잘 작동합니다. 루프의 변수 시퀀스를 표시하기 위해 경고를 사용했는데 이것들은 모두 올바르게 작동합니다.
나는 당황하고 있습니다. 콜백에서,
을 수행하여$('#win_preview').append($('<div id="preview"><div...
확인하지만, : 처음에
function drawPreview() {
var $preview = $('#preview');
$preview.remove();
$('#general_preview').remove();
try {
activecell.location;
}
catch (error) {
$('#active_cell').clone().attr('id','general_preview').appendTo('#win_preview');
return;
}
if (activecell.location.match(/^\d+_\d+$/)!==null) {
var x = parseInt(activecell.location.slice(0,activecell.location.indexOf("_")));
var y = parseInt(activecell.location.slice(activecell.location.indexOf("_")+1));
var area = "x"+activearea.join("x")+"x";
$('#win_preview').append($('<div id="preview"><div><div></div><div></div><div></div></div><div><div></div><div></div><div></div></div><div><div></div><div></div><div></div></div></div>'));
var i = y-1;
var j = x-1;
function loadCell() {
var exp = new RegExp("x"+i+"_"+j+"x","g");
if (area.match(exp)) {
if (i==y&&j==x) {
$('#active_cell').clone().children().unwrap().appendTo($preview.children().eq(1).children().eq(1));
++j;
loadCell();
}
else {
var jqxhr = $.getJSON('data/areas/'+$('#select_area').val()+'/'+x+"_"+y+'.json', function(data) {
var tmp = data;
for (var l=0; l<9; ++l) {
$preview.children().eq(i-y+1).children().eq(j-x+1).append('<div></div>');
}
for (var l=0; l<9; ++l) {
$preview.children().eq(i-y+1).children().eq(j-x+1).children().append('<div></div>');
}
for (var l = 0; l < 9; ++l) {
for (var m = 0; m < 9; ++m) {
$preview.children().eq(i-y+1).children().eq(j-x+1).children().eq(l).children().eq(m).attr("style","background: #"+tmp.p.c[tmp.c[l][m]-1]+" url(textures/terrain/"+tmp.p.t[tmp.t[l][m]-1]+".png) bottom center no-repeat");
}
}
if (i==y+1&&j==x+1) {
return;
}
else if (j==x+1) {
++i;
j = x-1;
loadCell();
}
else {
++j;
loadCell();
}
})
.error(function() { alert("There was an error loading the data. The data may be invalid or you may be looking for a file that does not exist."); })
}
}
else {
if (i==y+1&&j==x+1) {
return;
}
else if (j==x+1) {
++i;
j = x-1;
loadCell();
}
else {
++j;
loadCell();
}
}
}
loadCell();
}
}
은 "그것을 테스트하지 않고이 모든 기능을 썼습니다 ..."- 당신은 돌아가서 첫 번째 부분에서 작업 할 수 있습니다 :-( – JasCav
을 나는 당신이 실제로 이것을 읽을 경우 당신이 알고있는 것, 미안 해요. 나는 그것이 작동하도록했다. – jsonnull
@JasonSage - 나는 모든 것을 읽었습니다. 당신은 (편집하기 전에) "테스트하지 않고이 모든 기능을 썼다. 나는 오늘 저녁에 작동하게했다." 멋지다.하지만 테스트가 없다면 어떻게 디버깅 할 것인가? 좋은 출발점조차 없습니다. 그것이 내가 원래의 코멘트로 의미했던 것입니다. 거시기가 되려고하지 않았지만, 항상 좋은 개발 방법을 장려하는 것이 좋습니다. 현재와 같은 상황을 막을 수 있기 때문에 (좋은 생각을 완전히 이해합니다.) – JasCav