2012-10-23 3 views
1

문제는 내 기능이 calculate() 인 것입니다. 이 프로그램의 목적은 자바 스크립트와 html로 동적 스프레드 시트를 작성하는 것입니다. CSS는 장식 목적으로 사용됩니다.DOM의 JavaScript 산술 및 NaN 값에 문제가 있습니다.

지금까지 스프레드 시트에 값을 삽입했지만 간단한 계산을 실행하려고하면 셀에서 잡아내는 값이 제대로 잡히지 않습니다.

여기 내게 문제가되는 특정 기능이 있습니다. 엉성한 코드에 대해 사과드립니다. 어떤 도움을 주시면 고맙겠습니다. 나는 그게 내가 누락 된 단순한 것이라고 확신합니다.

EDIT :: 궁금한 점이 있으면 innerHtml.text 또는 value를 호출해야했습니다. 그것은 문제의 셀에 단순히 .innerHTML 이어야만했습니다.

function calculate() { 
    //create two variables to get the values in the row and columns 
    var row1, row2, col1, col2, total, totalInsert; 

    var row = document.getElementById("row"); 
    var col = document.getElementById("col"); 
    var value = document.getElementById(row + "_" + col); 
    var formula = document.getElementById("inputText"); 

    formula = formula.value; //=SUM(1,2,2,1) 
    formula1 = formula; 

    //get the raw values to ints 
    row = row.value; 
    col = col.value; 

    //get JUST the formula in questions part  
    formula = formula.substr(0,4); 

    //Parsing the the selected cells from =sum(1,1,2,1) into Cell ID's 
    col1 = parseInt(formula1.substr(5, 1));//row 1 
    row1 = parseInt(formula1.substr(7, 1)); 
    col2 = parseInt(formula1.substr(9, 1)); 
    row2 = parseInt(formula1.substr(11, 1)); // column2 

    //this gives us the proper cell's address. id=1_1 
    var td1 = col1 + "_" + row1; 
    var td2 = col2 + "_" + row2; 

    //problem starts around here 
    var sum = document.getElementById(td1); 
    var sum2 = document.getElementById(td2); 

    //this returns a undefined value 
    sum = sum.value; 
    sum2 = sum2.value; 

    //this restults in a NaN 
    sum = parseInt(sum); 
    sum2 = parseInt(sum2); 

    //creating the total value 
    total = sum + sum2; 

    //returning values 
    totalInsert = document.getElementById(td1).innerHTML = total; 
} 
+1

잘못된 ID가있는 것과 관련이있을 수 있습니다. [id 속성에 유효한 값은 무엇입니까?]를 참조하십시오. (http://stackoverflow.com/questions/70579/what-are-valid-values-for-the-id-attribute-in-html) – jbabey

+0

id가 "1_1"인 ? 그렇다면 innerHTML/Text로 내용을 가져 오는 'value'가 없으면 정의되지 않은 상태가됩니다. 또한 직접 행렬로 셀에 액세스 할 수 있습니다. 'thetable.rows [1] .cells [1] .innerHTML' (숫자 ID는 HTML5에서만 괜찮습니다.) –

+0

ID는 행 1_1 열, 1_2 등으로 레이블이 지정됩니다. 텍스트를 시도하고 int. – CTully12

답변

0

이 부분은 이상한 것처럼 보입니다. 두 요소를 선택한 다음 다른 요소를 찾기 위해 문자열로 결합하고 있습니까?

document.getElementById('[object Object]_[object Object]'); 

나 :

document.getElementById('[object HTMLDivElement]_[object HTMLDivElement]'); 

내가 그건 당신이 기대하는 일을 할 것입니다 확실하지 않다

var row = document.getElementById("row"); 
var col = document.getElementById("col"); 
var value = document.getElementById(row + "_" + col); 

은 ... 내 경험에 당신이 뭔가를 얻을 것입니다. .. 브라우저에 따라.

: 그래서 아마 당신이 실제로 의미)

그것은 rowcol 요소 inputs처럼 나에게 보이는, 이제 분명히 당신은는 ID의 종류와 요소를 가질 수 ,하지만 약간의 제정신이 될 것이다

var row = document.getElementById("row"); var col = document.getElementById("col"); var value = document.getElementById(row.value + "_" + col.value); 
관련 문제