質問: webアプリをiOSで開発しています。 ・Xcode8.3.3 ・Swift3.0 スクリーンショットの通り、web部分はWKWebViewを使い、下部にボタンが配置されています。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/93b0b49c14d2f73a9bfa6c64e2e3bd85.png) テキスト入力フォームが複数あるページでの動作を想定しています。 一つのテキスト入力フォームにフォーカスが当たっている状態で、Buttonを押した際に次(あるいは前)の入力フォームにフォーカスを移動したいです。(WKWebView側で用意してくれているキーボード上部の「∧」「∨」を自前で実装したい) evaluateJavaScriptを使いJavaScriptで制御しようとしていますが、やり方がわかりません。 ``` webView.evaluateJavaScript("document.getElementById(\"text3\").focus()", completionHandler: nil) ``` といったように、フォームのIDが分かっているものに対しては移動することができましたが、今いる位置の次(あるいは前)のIDの取得方法がわからず困っています。 移動のためのJavaScriptコードはどのように書けばよいでしょうか? (目的はフォーカスの移動なので、JavaScript以外の手段でも構いません)
回答: 自己解決しました。 1. `document.getElementsByTagName("input")`でテキスト入力フォームを全て取得する 2. フォーカスの当たっているフォームがn番目か調べる 3. n+1番目にフォーカスを当てる といった手順でひとまず想定の動作を実現できました。 ``` let js: String = "elements = document.getElementsByTagName(\"input\"); for (var i = 0; i < elements.length; i++) { if(document.activeElement.id == elements[i].id) { elements[i + 1].focus();break;}}" webView.evaluateJavaScript(js, completionHandler: nil) ```