2012-03-26 5 views
0

Ich bin ein Javascript-Neuling. Ich habe eine Reihe von Schaltflächen in meiner iOS App. Einige von ihnen haben Buchstaben in ihren Namen; Andere sind nur mit Nummern benannt. Ich versuche ein UI-Testskript zu schreiben. Im Skript habe ich ein Array namens buttons, das ein Array von UIAElement-Objekten darstellt, die UIButtons entsprechen.Javascript automatische Typumwandlung verursacht Probleme in meinem iPhone Automator-Skript

Wenn ich den folgenden Code, es funktioniert großartig:

buttons["clr"].tap(); 

Das möchte ich auf die Schaltfläche mit dem Titel „clr“ tippen, und es tut.

Aber ich kann keine Möglichkeit finden, die Schaltfläche mit Titel "2" zu tippen. Wenn ich den folgenden Code, ist es nicht für mich verhalten:

buttons["2"].tap(); 

Was passiert, ist, dass einige Stück des Systems auf den Button mit dem Index 2 in der Matrix tippen entscheidet. Das ist nicht dasselbe wie die Taste, deren Name 2 ist.

Kann jemand erklären? Und gibt es eine Möglichkeit, es zu zwingen, meine Saite als Saite zu behandeln? Ich habe ein paar Varianten ausprobiert, und keine davon hilft z.B.

EDIT: Benennung es etwas neben 2 wäre möglich, aber peinlich. Die App ist ein Taschenrechner, und 2 scheint wie der richtige Name für den Schlüssel, der genau das tut. Diese Namen werden verwendet, um die App für Menschen mit Behinderungen zu präsentieren. Ich kenne nicht alle Details, aber ich glaube, dass "2" auf lange Sicht besser funktionieren wird als "zwei".

Als Antwort auf die Frage, wie ich meine Array bevölkern, ist es über Apple's UIAElement class. Genauer gesagt, ich habe ein Objektfenster, das auch ein UIAElement ist, und ich bevölkern es durch

var buttons=window.buttons(); 
+1

JavaScript-Array-Index * * Strings sind. Kannst du dein Element neben "2" etwas nennen? – alex

+0

Wie bevölkern Sie Ihr Array? –

Antwort

1

Der folgende Code mein Problem gelöst. Aber ich bin immer noch am zugrunde liegenden Sprachproblem interessiert.

var twoButton = buttons.firstWithPredicate("name=='2'"); 
1

Sie sollten eine "plain" Objekt statt eines Arrays werden:

var buttons = {}; 

Sie dann lesen und schreiben Eigenschaften mit Hilfe der gleichen eckigen Klammer Syntax wie für ein Array:

buttons["2"] 

JavaScript-Arrays sind ein spezieller Objekttyp, der numerische Indizes behandelt (auch wenn Sie versuchen, sie als Zeichenfolge anzugeben).

die für weitere Informationen folgende lesen:

Verwandte Themen