使用 Mootools 将模板注入现有 table,但在 eval 时获取 rownum 未定义
Using Mootools to inject a template into an existing table, but getting rownum is undefined at eval
我对 MooTools 非常陌生,对 JavaScript 有点陌生。
我正在尝试让新行在单击按钮时显示。我已经复制了另一个程序员所做的代码并对其进行了调整以满足我的需要(据我所知并按照我老板的指示),但它不起作用。
点击事件注册了,但是昨天我在浏览器中调试代码时,我收到一条消息说 rownum 未定义,但今天我没有收到那个错误(但它仍然无法正常工作)。
<button id="add-new-row" style="text-align:center;margin-top:5px;width:85px;" class="boxbutton">Add New</button>
// This is what should be injected on button click
<script id="connectedjobtemplate" type="text/plain">
<tr id="childjobrow<%= rownum %>" class="<%= cl %>" data-row-id="<%= rownum %>">
<td>
<input class="childjobid" type="hidden" id="childjobid<%= rownum %>" name="childjobid[<%= rownum %>][transcribername]" value="0" />
<input data-row-id="<%= rownum %>" id="assignee[<%= rownum %>]" name="childjobid[<%= rownum %>][transcribername]" class="" style="width:140px;" list="transcribers" autocomplete="off" value="" placeholder="Name" />
<input type="hidden" id="transcriberid[<%= rownum %>]" name="childjobid[<%= rownum %>][transcriberid]" value="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="refNum[<%= rownum %>]" name="childjobid[<%= rownum %>][refNum]" value="<%= refNum %>" class="" style="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="pages[<%= rownum %>]" name="childjobid[<%= rownum %>][pages]" value="<%= pages %>" class="" style="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="orderDate[<%= rownum %>]" name="childjobid[<%= rownum %>][orderDate]" value="<%= orderDate %>" class="" style="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="nysid[<%= rownum %>]" name="childjobid[<%= rownum %>][nysid]" value="<%= nysid %>" class="" style="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="dinNum[<%= rownum %>]" name="childjobid[<%= rownum %>][dinNum]" value="<%= dinNum %>" class="" style="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="warrantNum[<%= rownum %>]" name="childjobid[<%= rownum %>][warrantNum]" value="<%= warrantNum %>" class="" style="" />
</td>
</tr>
</script>
<script type="text/javascript" src="<?php echo base_url(); ?>js/underscore-1.8.3-min.js"></script>
<script type="text/javascript">
// VARIABLES
var lastrow = 0;
// TEMPLATE
var rowtemplate = _.template(document.getElementById('connectedjobtemplate').innerHTML);
window.addEvent('load', function() {
if ($('linkedJobsBody').getChildren().length == 0) {
addChildJobRow();
}
});
$(document.body).addEvent('click:relay(#add-new-row)', function (e, el) {
try{
e.preventDefault();
addChildJobRow();
}catch(e){
console.log(e);
logevent({jobid: jid,event:'click#add-new-row',uri:window.location.href, eventdata: e});
}
});
function addChildJobRow() {
try {
lastrow++;
cl = (lastrow % 2 ? 'odd' : 'even');
Elements.from(rowtemplate({
rownum: lastrow,
cl: cl
})).inject($('linkedJobsBody'));
} catch (e) {
console.log(e);
logevent({jobid: jid, event: 'add-new-row', uri: window.location.href, eventdata: e});
}
}
单击“添加新”按钮时没有任何反应。我已经发出警报以表明它正在执行正确的功能,所以我知道它正在到达那里。我不明白 rownum 在 eval 时未定义的错误,因为我检查了其他程序员的代码并且在这方面是相同的。我不想开始弄乱 JavaScript 文件,因为我是 MooTools 的新手。
在此先感谢您的帮助。
这是我的最终代码。原来我必须传入几个变量,否则它不会起作用。
function addChildJobRow() {
try {
lastrow++;
let cl = (lastrow % 2 ? 'odd' : 'even');
var refNum = '<?php echo $this->MJob->getNewJobRef(232); ?>';
Elements.from(connectedjobtemplate({
rownum: lastrow,
cl: cl,
ref: refNum,
nysid: '',
dinNum: '',
warrantNum: ''
})).inject($('newChildJobTable'));
} catch (e) {
console.log(e);
}
}
我对 MooTools 非常陌生,对 JavaScript 有点陌生。
我正在尝试让新行在单击按钮时显示。我已经复制了另一个程序员所做的代码并对其进行了调整以满足我的需要(据我所知并按照我老板的指示),但它不起作用。
点击事件注册了,但是昨天我在浏览器中调试代码时,我收到一条消息说 rownum 未定义,但今天我没有收到那个错误(但它仍然无法正常工作)。
<button id="add-new-row" style="text-align:center;margin-top:5px;width:85px;" class="boxbutton">Add New</button>
// This is what should be injected on button click
<script id="connectedjobtemplate" type="text/plain">
<tr id="childjobrow<%= rownum %>" class="<%= cl %>" data-row-id="<%= rownum %>">
<td>
<input class="childjobid" type="hidden" id="childjobid<%= rownum %>" name="childjobid[<%= rownum %>][transcribername]" value="0" />
<input data-row-id="<%= rownum %>" id="assignee[<%= rownum %>]" name="childjobid[<%= rownum %>][transcribername]" class="" style="width:140px;" list="transcribers" autocomplete="off" value="" placeholder="Name" />
<input type="hidden" id="transcriberid[<%= rownum %>]" name="childjobid[<%= rownum %>][transcriberid]" value="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="refNum[<%= rownum %>]" name="childjobid[<%= rownum %>][refNum]" value="<%= refNum %>" class="" style="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="pages[<%= rownum %>]" name="childjobid[<%= rownum %>][pages]" value="<%= pages %>" class="" style="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="orderDate[<%= rownum %>]" name="childjobid[<%= rownum %>][orderDate]" value="<%= orderDate %>" class="" style="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="nysid[<%= rownum %>]" name="childjobid[<%= rownum %>][nysid]" value="<%= nysid %>" class="" style="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="dinNum[<%= rownum %>]" name="childjobid[<%= rownum %>][dinNum]" value="<%= dinNum %>" class="" style="" />
</td>
<td>
<input data-row-id="<%= rownum %>" id="warrantNum[<%= rownum %>]" name="childjobid[<%= rownum %>][warrantNum]" value="<%= warrantNum %>" class="" style="" />
</td>
</tr>
</script>
<script type="text/javascript" src="<?php echo base_url(); ?>js/underscore-1.8.3-min.js"></script>
<script type="text/javascript">
// VARIABLES
var lastrow = 0;
// TEMPLATE
var rowtemplate = _.template(document.getElementById('connectedjobtemplate').innerHTML);
window.addEvent('load', function() {
if ($('linkedJobsBody').getChildren().length == 0) {
addChildJobRow();
}
});
$(document.body).addEvent('click:relay(#add-new-row)', function (e, el) {
try{
e.preventDefault();
addChildJobRow();
}catch(e){
console.log(e);
logevent({jobid: jid,event:'click#add-new-row',uri:window.location.href, eventdata: e});
}
});
function addChildJobRow() {
try {
lastrow++;
cl = (lastrow % 2 ? 'odd' : 'even');
Elements.from(rowtemplate({
rownum: lastrow,
cl: cl
})).inject($('linkedJobsBody'));
} catch (e) {
console.log(e);
logevent({jobid: jid, event: 'add-new-row', uri: window.location.href, eventdata: e});
}
}
单击“添加新”按钮时没有任何反应。我已经发出警报以表明它正在执行正确的功能,所以我知道它正在到达那里。我不明白 rownum 在 eval 时未定义的错误,因为我检查了其他程序员的代码并且在这方面是相同的。我不想开始弄乱 JavaScript 文件,因为我是 MooTools 的新手。
在此先感谢您的帮助。
这是我的最终代码。原来我必须传入几个变量,否则它不会起作用。
function addChildJobRow() {
try {
lastrow++;
let cl = (lastrow % 2 ? 'odd' : 'even');
var refNum = '<?php echo $this->MJob->getNewJobRef(232); ?>';
Elements.from(connectedjobtemplate({
rownum: lastrow,
cl: cl,
ref: refNum,
nysid: '',
dinNum: '',
warrantNum: ''
})).inject($('newChildJobTable'));
} catch (e) {
console.log(e);
}
}