2011-10-11 2 views
2

나는이 코드를 가지고 데이터베이스에서 스포츠 통계를 수집하고 업데이트하고 있으며 변경이 감지되면 경고 (#scorealert div)를 표시하려고합니다. 변경된 점수가 하나뿐이면 제대로 작동합니다. 여러 변경 사항이있을 경우 잘못된 이름이 표시됩니다. 마지막 값을 계속 표시하고 이름은 변경하지 않습니다.자바 타이밍/루프 문제가 있습니까?

아직도 자바 스크립트/아약스와 학습 초보자 .. 부드럽게 해주십시오.

감사합니다.

function getscores() { 

    $.post("/get_live_scores.php", {e: <?=$entryid;?>}, function(celldata) { 

    data = jQuery.parseJSON(celldata); 
    $.each(data, function(i,item) { 
     var pname = data[i].pname; 
     var cell = data[i].key; 
     var save_val = data[i].save_val; 
     var wins = data[i].wins; 
     var shutouts = data[i].shutouts; 
     var goals = data[i].goals; 
     var assists = data[i].assists; 
     var ht = data[i].ht; 
     var gwg = data[i].gwg; 

     if ($('td#'+cell+'_goals').text() < goals) { 
      $('div#scorealert').html('Goal by '+data[i].pname); 
      $('div#scorealert').animate({left: '0px'}); 
      $('div#scorealert').delay(4000).animate({left: '-300px'}); 
     } 
     updatecell(pname, cell, save_val, wins, shutouts, goals, assists, ht, gwg); 


    }); 

    updatetotal(); 
    }); 
}  
+0

글로벌 네임 스페이스에서이를 지키려면'var data ='('var'에주의하십시오)를 원할 수도 있습니다. –

+0

결과가 올바른 순서로오고 있는지 확인하십시오. 나는 나에게 뛰어 오르는 무엇인가 잘못 본 것을 볼 수 없다 ... – nickf

+0

또한'pname'은 업데이트되지 않는 * 유일한 필드인가? –

답변

0

e: <?=$entryid;?>

는 PHP로 생성되어 있는지 확인하십시오? 그것이 사실이라면, php가 생성 한 후에 변경되지 않고 브라우저로 보내집니다. 그래서 귀하의 자바 스크립트는 항상 동일한 값을 얻고 항상 동일한 데이터를 게시합니다.

+0

상단에 몇 가지 헤더 데이터가 있습니다. '

+0

클래스 scorealert가있는 div가 많습니까? 각 scorealert에 대해 확인하는 방법, 해당 div 만 업데이트됩니다. 마지막으로 "목표"를 얻으려고 여러 번 업데이트됩니까? Firebug를 사용하여 추적하십시오 ... – Tommy

+0

"var pname"이 루프 중에 변경되는지 확인하십시오. 변경되면 문제는 $ ('div # scorealert') .html ('Goal by'+ data [i])입니다. pname); 당신은 루프에서 그것을 계속 업데이트합니다 ... – Tommy

1

나는 정직하게 말할 것이다. 왜 첫 번째가 표시되는지 알 수 없습니다. 내가 말할 수있는 한, 그것은 마지막을 표시해야합니다. 이유 : 각 루프에서 div에 .html()을 호출하면 경고 div의 내용이 새 내용으로 바뀝니다. .delay() 함수가 그 타이밍을 방해하지 않는다면?

.append() 또는 다른 비파괴 DOM 추가 기능으로 div에 goal-scorers (등)를 추가 한 다음 루프가 완료된 후 애니메이션 (모든 스코어러로 가득)을 호출합니다.

[코멘트 토론의 결과를 추가 편집 :]으로 .Append()가 (이 원하는 효과 아니었다) 같은 사업부에 그들 모두를 추가하기 때문에

, 방법은 별개의 경고 용기에 보관하는이다 필요에 따라 동적으로 컨테이너를 작성하십시오.

+0

그 일을하는 경우 OP가 잘못되었을지라도 첫 번째가 아니라 마지막에 목록이 표시되어야합니다. –

+0

죄송합니다, 당신이 맞습니다. 실제로 마지막 값을 두 번 표시합니다. 초기 게시물을 업데이트했습니다. : 내 의도는 각 새 점수 알림에 대해 상자를 실제로 열거 나 닫으려는 것이었지만 한번에 모두 표시하지 마십시오. –

+0

.append 메서드가 작동하고 거기에서 적절한 이름을 가져옵니다. 각 개별 점수 업데이 트에 대한 메시지를 슬라이드. 만약 내가 원래 의도했던 곳에서 내 코드가 잘못되었다는 생각을 가진 사람이 있다면, 그게 좋겠다. 지금 당장은 .append going. 좋은 단계입니다. 감사합니다. –

관련 문제