0

UIwebview を使用していくつかの JavaScript を実行しています。iOS ネイティブからのボタンのクリック時に関数呼び出し間で変数値を保持したいと考えています。

私が使用しているコードが切り取られました。

var MyApp_SearchResultCount = 0;
var currSelected = 0;
var prevSelected = 0; 

function jump(howHigh){

    //this.prevVal = this.currentVal; 
    //this.currentVal = this.currentVal + 1; 

    //************** STARTS ****************//

    //alert(window.currSelected);

    //************** ENDS  *****************//


    prevSelected = currSelected;
    currSelected = currSelected + howHigh;
    alert("currSelected" + currSelected);
  }

jump メソッドが呼び出された回数に関係なく、currSelected は常に 1 のままです。

助けてください ありがとう djrecker

4

2 に答える 2

0

次のようにしてインクリメントすることができました:

  1. シンプルな Webview とそのプロパティを作成する
  2. int 型の i のプロパティを作成する
  3. クリックされて次のメソッドを実行するボタンを作成します

あなたの場合、インクリメントは JavaScript コードで発生していますが、その状態はクラスに認識されていません。いくつかの引数を渡すことで、動的 Javascript を作成できる必要があります。

-(IBAction)runJS{ 
    NSString *javaScript = [NSString stringWithFormat:@"alert(%d)",self.i];

    NSString *string = [wv stringByEvaluatingJavaScriptFromString:javaScript];


    self.i=self.i+1;
}
于 2013-01-07T19:12:54.553 に答える
0
-(IBAction)runJS{
    NSString *javaScript = [NSString stringWithFormat:@"function abcd(){var x=%i; return x;} abcd();",self.i];

    NSString *string = [wv stringByEvaluatingJavaScriptFromString:javaScript];


    self.i=self.i+1;

    NSLog(@"The returned value is %@",string);
}

実際、関数を定義して呼び出すことができます。関数の戻り値は、戻り文字列に取り込まれます。コメントフィールドでコードを適切にフォーマットすることができなかったため、別の回答を追加しました

于 2013-01-08T18:01:41.883 に答える