2016-08-11 4 views
0

Ruby on rails 프로젝트를 개발 중입니다. 뷰 파일에는 버튼 클릭시 테이블 행을 복제 할 수있는 자바 스크립트가 있습니다. 각 테이블 행에는 여러 입력 텍스트 상자가 있습니다. 이제 id를 새로 복제 된 행의 입력 텍스트 상자에 동적으로 할당하려고합니다. 그러나 나는이 오류에 직면하고있다 :javascript에서 잡히지 않은 ReferenceError

지수 : 48 catch되지 않은 ReferenceError가 : 항목 1이 정의되지 않은

지수는 뷰 이름입니다.

내 코드는 다음과 같습니다

function insRow() 
    { 
     var x=document.getElementById('POITable'); 
     var new_row = x.rows[1].cloneNode(true); 
     new_row.style.visibility = "visible"; 
     var len = x.rows.length; 

     new_row_itembox=new_row.cells[0].getElementsByTagName("input"); 
     new_row_itembox.id=<%= ("item"[email protected]_s) %>; //this line causes the error 
     //console.log(new_row_itembox); 

     var inp1 = new_row.cells[1].getElementsByTagName('input')[0]; 
     inp1.id += len; 
     inp1.value = ''; 
     var inp2 = new_row.cells[2].getElementsByTagName('input')[0]; 
     inp2.id += len; 
     inp2.value = ''; 
     x.appendChild(new_row); 

     var sec_last_row=x.rows[x.rows.length-2]; 
     console.log(x.rows.length); 
     console.log(x.rows[x.rows.length-2]); 
     sec_last_row.cells[5].innerHTML="<img alt='Icon' src='/assets/minus-icon.png' id='delPOIbutton' onclick='deleteRow(this)'/>"; 
     sec_last_row.cells[6].innerHTML=""; 

     var last_row=x.rows[x.rows.length-1] 

     last_row.cells[5].innerHTML="<img alt='Icon' src='/assets/add-icon.png' id='addmorePOIbutton' onclick='insRow(this)'/>"; 
     last_row.cells[6].innerHTML="<img alt='Icon' src='/assets/minus-icon.png' id='delPOIbutton' onclick='deleteRow(this)'/>"; 
    } 

자바 스크립트 함수 위의 버튼 클릭에 다른 행을 삽입하기위한 것입니다.

코드에서 @counter는 해당 컨트롤러 동작에 정의 된 레일스 변수입니다.

해당 부분을 제거하고 입력 상자의 ID를 정적으로 할당하면 정상적으로 작동합니다.

내 HTML 코드는 다음과 같습니다

<body> 
<form> 
<center> 
<div id="POItablediv"> 
<br/> 
<table id="POITable"> 
    <tr> 
     <th>Item</th> 
     <th>Brand</th> 
     <th>UOM</th> 
     <th>Quantity</th> 
     <th>Remarks</th> 
    </tr> 

    <tr style="visibility:hidden;">    <!-- This is just a dummy row--> 
     <td><input size=25 type="text"/></td> 
     <td><input size=25 type="text"/></td> 
     <td><input size=25 type="text"/></td> 
     <td><input size=25 type="text"/></td> 
     <td><input size=25 type="text"/></td> 
     <td><img alt="Icon" src="/assets/add-icon.png" id="addmorePOIbutton" onclick="insRow()" /></td> 
     <td><img alt="Icon" src="/assets/minus-icon.png" id="delPOIbutton" onclick="deleteRow(this)"/></td> 
    </tr> 

    <tr> 
     <td><input size=25 type="text"/></td> 
     <td><input size=25 type="text"/></td> 
     <td><input size=25 type="text"/></td> 
     <td><input size=25 type="text"/></td> 
     <td><input size=25 type="text"/></td> 
     <td><img alt="Icon" src="/assets/add-icon.png" id="addmorePOIbutton" onclick="insRow()" /></td> 
     <td><img alt="Icon" src="/assets/minus-icon.png" id="delPOIbutton" onclick="deleteRow(this)"/></td> 
    </tr> 
    </table> 
    </div> 

    <input type="submit" name="submit_button" onclick="make_hash()"> 


    </center> 
    </form> 
    </body> 
+0

라인 48 알, 당신에 더'item1' 없다하지 않습니다 코드 - 아마도 당신은 잘못된 코드를 게시했습니다 –

+0

그냥 줄을보세요 : new_row_itembox.id = <% = ("item"+ @ counter.to_s) %>; – Abhradip

+0

어디서 참조했는지 알지 못합니다. 존재하지 않는다는 증거가 없습니다. –

답변

2

변경 라인

new_row_itembox.id=<%= ("item"[email protected]_s) %>; 

new_row_itembox.id='<%= ("item"[email protected]_s) %>'; 
       ^       ^
        -------- added these --------- 
+0

내가 직면하고있는 또 다른 문제. <% @ 카운터 = @ 카운터 + 1 %>가 작동하지 않습니다. 여전히 서버 쪽 코드 문제가 될 <% @ counter = @ counter + 1 %> – Abhradip

+0

을 사용하고 있기 때문에 계속 인쇄중인 item1 .... (item2, item3, item4 .....을 출력해야합니다.) 표시되지 않은, 나는 그녀가 레일에있어 여부에 관계없이 루비에 대해 아무것도 알지 못한다고 고백 –

+0

그 okk 동생 :) – Abhradip

관련 문제