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>
라인 48 알, 당신에 더'item1' 없다하지 않습니다 코드 - 아마도 당신은 잘못된 코드를 게시했습니다 –
그냥 줄을보세요 : new_row_itembox.id = <% = ("item"+ @ counter.to_s) %>; – Abhradip
어디서 참조했는지 알지 못합니다. 존재하지 않는다는 증거가 없습니다. –