1

这个奇怪的错误已经连续两天困扰我了!

我有 5 个视图,每个视图都包含一个滚动视图,并在单击它们时在它们上设置 z-index。出于某种奇怪的原因,z-index 为 3 的元素总是显示在 z-index 为 4 的元素之上,除非它是倒数第二个元素被点击。到底是怎么回事?!

请查看下面的代码。我用的是合金。显然不是生产代码,但我意识到它可能不是我的代码,所以我使用以下代码对其进行了测试。非常感谢你的帮助!

合金标记:

<!-- index.xml -->
<Alloy>
  <Window id="container">
    <View id="v0" class="test" top="0">
      <ScrollView borderColor="green">
        <Label/>
      </ScrollView>
    </View>
    <View id="v1" class="test" top="40">
      <ScrollView borderColor="blue">
        <Label/>
      </ScrollView>
    </View>
    <View id="v2" class="test" top="80">
      <ScrollView borderColor="red">
        <Label/>
      </ScrollView>
    </View>
    <View id="v3" class="test" top="120">
      <ScrollView borderColor="purple">
        <Label/>
      </ScrollView>
    </View>
    <View id="v4" class="test" top="160">
      <ScrollView borderColor="teal">
        <Label/>
      </ScrollView>
    </View>
  </Window>
</Alloy>

这是主要脚本:

// index.js
zs = [];

changeOrder = function(){
  for(var i=0; i<5; i++){
    z = zs[i];
    v = $["v#{i}"];
    // Set the supposedly correct order of view stack
    v.setZIndex(z);
    // Display the order for debugging
    v.children[0].children[0].setText(z);
};

$.v0.addEventListener("click", function(){
  zs = [5,4,3,0,1];
  changeOrder();
});

$.v1.addEventListener("click", function(){
  zs = [1,5,4,3,0];
  changeOrder();
});

$.v2.addEventListener("click", function(){
  zs = [0,1,5,4,3];
  changeOrder();
});

$.v3.addEventListener("click", function(){
  zs = [3,0,1,5,4];
  changeOrder();
});

$.v4.addEventListener("click", function(){
  zs = [4,3,0,1,5];
  changeOrder();
});

$.container.open()

钛手机 3.0.22 合金 1.0.0 iOS 模拟器 6.1 OSX 10.8

4

1 回答 1

0

看起来您正在将 PHP 与 javascript 混合,因此对视图元素的引用是错误的。此外,您设置视图的方式有问题,因此当您单击最顶部的视图时,其他视图变得不可点击,但是,这正是您想要做的。这个:

v = $["v#{i}"];

应该:

v = $["v"+i];

于 2013-03-20T19:43:46.907 回答