Javascript Dashcode列表-OnClick
我已经在Dashcode中创建了一个项目,插入了一个列表控件,启用了一个动态列表,创建了一个JSON对象并将其与该控件关联。代码看起来像这样Javascript Dashcode列表-OnClick,javascript,dashcode,Javascript,Dashcode,我已经在Dashcode中创建了一个项目,插入了一个列表控件,启用了一个动态列表,创建了一个JSON对象并将其与该控件关联。代码看起来像这样 var stations = { _rowData: ["Mitchelton", "Gaythorne", "Albion", "Central", "Burpengary", "Petrie", "Morayfield", "Caboolture", "Ferny Grove"], numberOfRows: functi
var stations = {
_rowData: ["Mitchelton", "Gaythorne", "Albion", "Central",
"Burpengary", "Petrie", "Morayfield", "Caboolture", "Ferny Grove"],
numberOfRows: function() { return this._rowData.length; },
prepareRow: function(rowElement, rowIndex, templateElements) {
if (templateElements.label) {
templateElements.label.innerText = this._rowData[rowIndex];
}
rowElement.onclick = function(event) { alert("Row "+rowIndex); };
}
正如您所看到的,当选择一个项目时,它将打印行索引,但我想显示该索引的实际值
不幸的是,这个(例如)“this.\u rowData[2]”不起作用,它似乎无法找到“\u rowData”对象。这应该可以:
prepareRow: function(rowElement, rowIndex, templateElements) {
if (templateElements.label) {
templateElements.label.innerText = this._rowData[rowIndex];
}
var _this = this;
rowElement.onclick = function(event) { alert(_this._rowData[2]); };
}
问题在于,在rowElement.onclick
事件处理程序中,此
引用的是DOM元素rowElement
,而不是站点
对象。我们通过创建一个指向stations
对象的变量(我将其命名为\u this
,但您可以随意调用它)来解决这个问题,然后每当我们想要访问事件处理程序中的stations
对象时,就使用这个变量
有关this
关键字的更多信息,请参阅以下两篇文章: