2011-07-26 4 views
1

좋아, 그래서 그들에 어떤 정보가 있다면 함께 추가하고 싶은 열이 있습니다. 그래서자바 추가하기

  • 계정을 가지고 있다고

  • 3
  • 2
  • 1
    • .

4 개 계정 공간 만 3 계정이 있습니다. 어떻게 추가 할 자바 스크립트를 만드나요? 실제 마크 업이 같은 목록 인 경우

+2

지금까지 무엇을 했습니까? 코드 예제가 있습니까? –

답변

2

Live Example

HTML :

<ul> 
    <li id="accounts"> 
     <p> Accounts </p> 
     <ul> 
      <li> 1 </li> 
      <li> 2 </li> 
      <li> 3 </li> 
      <li> . </li> 
     </ul> 
    </li> 
</ul> 

자바 스크립트 :

// Get accounts, ul and set sum to 0 
var acc = document.getElementById("accounts"), 
    ul = acc.getElementsByTagName("ul")[0], 
    sum = 0; 

// Filter out text nodes. Returning an array of <LI> elements 
var lis = Array.prototype.filter.call(ul.childNodes, function(li) { 
    if (li.tagName === "LI") { 
     return true; 
    } 
}); 

// Loop through LIs adding up the sum 
for (var i = 0, ii = lis.length; i < ii; i++) { 
    // If it's the last LI element then set the textContent. 
    if (i === ii - 1) { 
     lis[i].textContent = sum; 
    } else { 
     sum += +lis[i].textContent; 
    } 
} 

면책 조항 : 현대 브라우저 또는 모더 나이저이 필요합니다.

+0

그건 내 자신의 구현보다 너무 정돈 된 ... 그리고 50 % 더 적은 루프 ..! ** + 1 ** = D –

+0

@DavidThomas 귀하의 구현은 어디에서 했습니까? – Raynos

+0

나는 그것을 부끄럽게 여긴다.하지만 JS Fiddle (http : // jsfiddle.net/davidThomas/HdAqr /). 그것은 당신 자신의 구현과 거의 같은 생각입니다. 그래서 나는 그것을 게시하지 않았습니다. 그것은 훨씬 덜 간결하고 간결합니다. =/ –

0

, 당신이 뭔가를 할 수 있습니다 :

// using jquery syntax for brevity; consider it pseudocode 

var jList = $('#accounts'); 

function addColumns() { 
    var iSum = 0; 
    jList.find('li').each(function() { 
    var jLI = $(this); 
    if(parseFloat(jLI.text()) != 'NaN') 
     iSum += parseFloat(jLI.text()); 
    }); 
    return iSum; 
} 

이 슈퍼 좋은 코드가 아닙니다. 우리가하는 일에 대해 좀 더 많은 정보를 주면 좀 더 튼튼한 것이 제안되어야합니다. 그러나 기본 개념은 요소의 집합을 검사하여 요약 가능한 콘텐츠가 있는지 (즉, 텍스트 콘텐츠가 숫자로 해석 될 수 있는지) 확인하는 것입니다. 그런 다음 summable 항목을 함께 추가합니다.

이와 같은 알고리즘의 요구 사항은 "열"을 마크 업하는 방식에 제약을 가하게됩니다. 그러나 거의 무한한 가능성이 있습니다.

+0

"jQuery"는 어디에서 말합니까? – Raynos

+0

"$"함수는 .find, .each 및 .text 메서드뿐만 아니라 모두 jQuery에서 제공합니다. 그리고 제 대답에서 말했듯이 jQuery 의존적 구문을 사용하여 간결하게했습니다. Michael이 jQuery를 사용하지 않더라도, 의사 코드와 마찬가지로 충분히 그가 수행하고있는 것을 따라갈 수 있습니다. 나는 또한 텍스트의 코드를 설명했다. downvote처럼 보이지 않는 것은 정말 적절합니다. – Tom

+0

그럴 수도 있습니다. jQuery가 항상 옵션이라는 가정이 마음에 들지 않습니다. 또한 사람들이 JavaScript 질문을하는 경향이있을 때 그들은 실제 DOM 조작을보고 싶어합니다. 코드를 실제 DOM 조작 코드로 변환하는 것은 다른 과제입니다. – Raynos

관련 문제