2013-02-23 3 views
0

쿼리 결과를 가져 와서 반복하고 페이지에 출력하기 전에 일부 조정을 시도합니다. += 연산자가 모든 브라우저에서 올바르게 작동하는 것처럼 보일 수 없습니다. 하지만 -= 연산자가 제대로 작동하는 것 같습니다. 기본적으로 +=은 연결 만합니다.- = 연산자가 작동하지만 + =

결과를 숫자로 표시하려고 시도했지만 그 중 하나가 작동하지 않는 것 같습니다.

var str = '<h2>The Score</h2>' 

    for (var i = 0; i < data.message.DATA.length; i++) { 

    var theName = data.message.DATA[i][columnMap.ENTRYID] 
     switch (theName) 
     { 
     case "jrd": 
      newname = "Carmen"; 
      theNumber = data.message.DATA[i][columnMap.TOTALCOUNT] -= 110; 
      if ($('#entryid').val() == "jrd"){ 
       $('#recordcount').text(theNumber); 
      } 
      break; 
     case "ejf": 
      newname = "Elijah"; 
      theNumber = Number(data.message.DATA[i][columnMap.TOTALCOUNT] += 50); 
      if ($('#entryid').val() == "ejf"){ 
       $('#recordcount').text(theNumber); 
      } 
      break; 
     } 


     str += '<b>'+newname+'</b>' 
     str += ' '+theNumber+'<br/>' 
    } 

    $("#score").html(str) 
    } 

여기 내 ColdFusion 쿼리에서 반환 된 데이터입니다. 나는 ... CFC를에 {"message":{"COLUMNS":["ENTRYID","TOTALCOUNT"],"DATA":[["ejf","62"],["gdd","52"],["jrd","215"],["kpf","70"]]},"error":false}

+0

왜 '+ ='호출을'번호 '로 묶고 있습니까? –

+0

성취하려는 것은 무엇입니까? 새로운 값을'theNumber'에 할당하면서'data.message.DATA [i] [columnMap.TOTALCOUNT]'를 증가/감소시키는 것을 의미합니까? –

+0

숫자가되어야하는 _result_가 아니라 각 피연산자입니다. 따라서 data.message.DATA [i]를 숫자로 캐스팅해야 할 수도 있습니다. –

답변

2

를 호출 할 $.ajax()를 사용하고 난 당신이 당신은 여전히 ​​ 수 호출 내부 을 연결하고

Number(data.message.DATA[i][columnMap.TOTALCOUNT]) + 50; 

를 작성하는 의미 생각합니다.

+1

'Number (0) + = 1' -'ReferenceError : 대입의 왼쪽이 잘못되었습니다' –

+1

@PaulS. woops 감사합니다. 그건 단지 '+ 50'이어야합니다. –

1

다른 답변으로 문제의 절반이 해결되지만 TOTALCOUNT 세트도 필요합니다. 당신은이 긴 손을 할 수 있지만 최소한으로 해결할 것 같아요 개체을 var로 사용하면 +-을 사용하여 one-liners를 유지할 수 있습니다.

/* for (;;) { */ 

var DATAi = data.message.DATA[i], // added new var `DATAi` 
    theName = DATAi[columnMap.ENTRYID]; 
switch (theName) { 
    case "jrd": 
     newname = "Carmen"; 
     theNumber = DATAi[columnMap.TOTALCOUNT] = +DATAi[columnMap.TOTALCOUNT] - 110; // made this match 
     if ($('#entryid').val() == "jrd") { 
      $('#recordcount').text(theNumber); 
     } 
     break; 
    case "ejf": 
     newname = "Elijah"; 
     theNumber = DATAi[columnMap.TOTALCOUNT] = +DATAi[columnMap.TOTALCOUNT] + 50; // modified 
    // ... 
+0

내 스크립트로 두 개의 다른 DOM 요소를 업데이트하고 있습니다. jrd로 로그인 한 경우 페이지 하단의 점수 목록과 함께 페이지 오른쪽의 큰 상자에 "점수"가 표시됩니다. 이 질문에 대해'case' 문을 꽤 짧게했습니다 ... – Ofeargall

+0

@Ofeargall 예. 글쎄요. "-''괜찮은 것, 그다음에 그냥'- = 50'? " 그래서 나는'data.message.DATA [i]'를 4 번 반복하지 않고 캐스팅과 설정을 보여주는 답을 썼다. 객체는 ByRef이므로,'o = {a : 1}; p = 0; p [ 'a'] = 2; o [ 'a'] === 2;' –

관련 문제