1

@assigned が常に 0 なのはなぜですか?

var gates:XML = <gates>
    <gate_id>
      10991
    </gate_id>
    <gate_id>
      10999
    </gate_id>
    <gate_id>
      11000
    </gate_id>
    <gate_id>
      11001
    </gate_id>
  </gates>;

var assignedGateIds:Array = ["10991","10999"];

for each(var xgate:XML in gates..gate_id){
    var gateId:String = xgate.text();

    if(assignedGateIds.indexOf(xgate.text())>-1){
        xgate.@assigned = 1;
    }else{
        xgate.@assigned = 0;
    }
}
4

2 に答える 2

0

text() 関数は文字列ではなくオブジェクトを返すため、非常に単純です。トレースを使用すると文字列に変換されますが、確認するとtrace(getQualifiedSuperclassName(xgate.text()));オブジェクトが返されることがわかります。

これを回避するには、私は通常使用 trace(getQualifiedSuperclassName(xgate.text()+''));し、文字列に強制します。使用することもできますas String

var gates:XML = <gates>
    <gate_id>
      10991
    </gate_id>
    <gate_id>
      10999
    </gate_id>
    <gate_id>
      11000
    </gate_id>
    <gate_id>
      11001
    </gate_id>
  </gates>;

var assignedGateIds:Array = ["10991","10999"];

for each(var xgate:XML in gates..gate_id){
    var gateId:String = xgate.text();

    if(assignedGateIds.indexOf(xgate.text()+"")>-1){ // <- added +'' here
        xgate.@assigned = 1;
    }else{
        xgate.@assigned = 0;
    }
}
于 2013-03-27T19:04:15.820 に答える
0

変化する

    if(assignedGateIds.indexOf(xgate.text())>-1){

    if(assignedGateIds.indexOf(gateId)>-1){

またはに

    if(assignedGateIds.indexOf(String(xgate.text()))>-1){

またはに

    if(assignedGateIds.indexOf(xgate.text().toString())>-1){
于 2013-03-28T13:33:10.217 に答える