我不确定我是否正确地问这个问题,但是如何访问对象的引用变量?
例如,
var datagrid = new DataBaseGrid();
console.log(datagrid);
DatabaseGrid.prototype.initializeGrid = function(grid) {
var self = this;
console.log(self); //self references same object as datagrid
grid.setCellRenderer("action", new CellRenderer({
render: function(cell, id) {
cell.innerHTML+= "<i onclick=\""+self+".deleteRow("+id+");\" class='fa fa-trash-o' ></i>";
console.log(cell.innerHTML);
}
}));
};
对于cell.innerHTML,我想用对象引用self
替换datagrid
。因此,如果id
为55,则单元格的HTML将呈现如下:
<i onclick="datagrid.deleteRow("55")"; class='fa fa-trash-o' ></i>
相反,点击该元素时出现错误Uncaught SyntaxError: Unexpected identifier (index):1
。
我想要这样做的原因是因为我有其他DataBaseGrid对象将使用initializeGrid,我不想硬编码只有一个对象引用它。
答案 0 :(得分:4)
您正在尝试将对象注入字符串。字符串表示可能看起来像[object DatabaseGrid]
,结果是HTML:
<i onclick="[object DatabaseGrid].deleteRow(1);" class='fa fa-trash-o'></i>
onclick
中存在语法错误。这是不使用内联事件处理程序或innerHTML
的参数;相反,使用DOM:
var i = document.createElement('i');
i.className = 'fa fa-trash-o';
i.onclick = self.deleteRow.bind(self, id);
cell.appendChild(i);