首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在循环中从事件侦听器中获取in get变量

在循环中从事件侦听器中获取in get变量
EN

Stack Overflow用户
提问于 2012-02-03 06:17:30
回答 1查看 862关注 0票数 0

希望这是有意义的,我正在使用钛移动构建一个iPhone应用程序。我有一个由100个项目组成的数组,每个项目都有一个DishID和一个DishTitle,我在一个表视图中显示DishTitle,在事件侦听器上,我需要传递DishID并在事件侦听器上暂时使用alert它,稍后我将对项目ID执行一些操作这是我目前为止的代码:

代码语言:javascript
运行
复制
var dishes = eval(this.responseText);

for (var i = 0; i < dishes.length; i++)
            {

                DishID[i] = dishes[i].DishID;

                var row = Ti.UI.createTableViewRow();
                    row.selectedBackgroundColor = '#fff';
                    row.height = 30;
                    row.className = 'datarow';
                    row.clickName = 'row';

                // Create the label to hold the screen name
                name[i] = Titanium.UI.createLabel({
                    color:'#000',
                    font:{fontSize:16,fontWeight:'bold', fontFamily:'Arial'},
                    left:5,
                    top:2,
                    height:30,
                    width:200,
                    text:dishes[i].DishTitle
                });

                name[i].addEventListener('click', function(e){

                                 alert(DishID[i]);
                            });

            }

我遇到的问题是,无论我点击哪个标签,我都会得到相同的ID208,我是不是做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-03 12:21:57

你有一个作用域/闭包的问题。当“点击”发生的时候,i=208。我发现最好把eventListener放在桌子上,把自定义属性放在行上:

代码语言:javascript
运行
复制
var table = Ti.UI.createTableView();
var rows = [];

for(var i = 0; i < dishes.length; i++) {

    var row = Ti.UI.createTableViewRow({
        selectedBackgroundColor : '#fff',
        height : 30,
        className : 'datarow'
    });

    row.dishId = dishes[i].DishID;

    // Create the label to hold the screen name
    var label = Ti.UI.createLabel({
        color : '#000',
        font : {
            fontSize : 16,
            fontWeight : 'bold',
            fontFamily : 'Arial'
        },
        left : 5,
        top : 2,
        height : 30,
        width : 200,
        text : dishes[i].DishTitle
    });

    row.add(label)

    rows.push(row);
}

table.setData(rows);

table.addEventListener('click', function(e) {
    alert(e.row.dishId);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9120838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档