钛的范围问题

Posted

技术标签:

【中文标题】钛的范围问题【英文标题】:Scope issue with titanium 【发布时间】:2013-11-25 18:21:14 【问题描述】:

下面创建的 tfield[] 数组存在范围问题。我正在用六个单元格创建十行。每个单元都有一个附加的侦听器以进行验证。我需要对每一行进行计算,对单元格求和并创建一个运行总计。当我调用例程对单元格求和时,我的单元格变量 tfield[x].value 要么为空白要么未定义,具体取决于我最初声明 tfield[] 的位置。

function createRow1(i) // start create row 
 

  row1 = Ti.UI.createView(
    backgroundColor: 'white',
    borderColor: '#bbb',
    borderWidth: 1,
    width:'100%', height: 70,
    top: 0, left: 0 );

    var tfield1 = [];
    var label1 =  [];
    var label2 = []; 

    for (i=0;i<6;i++)
    
       tfield1[i] = Ti.UI.createTextField(baseAttrs); 
       label1[i] = Ti.UI.createLabel(lbAttrs1);
       label2[i] = Ti.UI.createLabel(lbAttrs2);
    


    tfield1[0].addEventListener('change', function()
    
       if (tfield1[0].value > 10)
       
          tfield1[0].value = "";  
          showMessageTimeout("More than 10.",15);
        
     ); 

   // 6 listeners created, one for each element in the
   // tfield[] array. Omitted for brevity.     

   tfield1[0].left ="0%"; 
   tfield1[1].left ="12%";
   tfield1[2].left ="24%";
   tfield1[3].left ="36%";
   tfield1[4].left ="48%";
   tfield1[5].left ="60%";



   for (i=0;i<6;i++)
   
      row1.add(tfield1[i]);
      row1.add(label1[i]);
      row1.add(label2[i]);
   

  return row1;

  /// end of createrow1

  for(i = 0; i < 10; i++)
    row1 = createRow1(i);
    scrollView1.add(row1);
  

/*
     all six rows are added to a scrollview. A button 
     click fires a listener that sums each row which  
     should also calc a running total of all rows. When 
     called the calc function either shows tfield[] 
     as undeclared or as a blank, depending on 
     where tfield[] is declared.
  */

【问题讨论】:

【参考方案1】:

我正在回答你的最后一个问题,但它已被删除。

首先,你现在的问题不像以前那么清楚了。我认为是缺少代码。

但别担心,我有你发布的所有代码。所以:

你真正在做的是一个元素矩阵,我认为你可以访问所有 textField 元素的简单方法是:

var tfields = [];

buttonCalc.addEventListener('click',function(e)

   showMessageTimeout("calc pressed",15);
   alert(tfields[0][0].value);
   // alert(tfield1[0].value);  // reference to tfield[0] blows up.

);

...

function createRow1(i) // start create row 
 
    ...
    tfields.push(tfield1);  //Add this line here
    return row1;

  /// end of createrow1

我已经回答了你所有其他问题,你可以提出一个新问题:-)

【讨论】:

这很有趣 :) 我回应了一个请求,用更小的代码将每个帖子分成一个问题。希望我等过! 我用更新的多维数组代码创建了一个新问题。再次感谢您的推送提示。 嗨 Jocala,我找不到你提到的问题,你能给我一个链接吗?您还需要其他 3 个问题的帮助吗?你很高兴 ***.com/questions/20224603/… 我转发了。不知道昨晚我的帖子发生了什么!

以上是关于钛的范围问题的主要内容,如果未能解决你的问题,请参考以下文章

钛合金(TA、TC、TB)阐述热处理工艺

存储整数范围的数据结构,查询范围并修改范围

请求范围和查看范围[重复]

如果外部事务范围未完成,内部事务范围会回滚吗?

如何根据两个时间范围列表的交集创建时间范围列表?

“文件范围”和“程序范围”有啥区别