2016-09-19 55 views
2

我有這個設置的html:獲取HTML值[迅速]

<div class="container-fluid"> 
<div class="panel panel-default "> 
    <div class="panel-body"> 
     <form id="coupon_checkout" action="http://uat.all.com.my/checkout/couponcode" method="post"> 
      <input type="hidden" name="transaction_id" value="4245"> 
      <input type="hidden" name="lang" value="EN"> 
      <input type="hidden" name="devicetype" value=""> 
      <div class="input-group"> 
       <input type="text" class="form-control" id="coupon_code" name="coupon" placeholder="Coupon Code"> 
       <span class="input-group-btn"> 
       <button class="btn btn-primary" type="submit">Enter Code</button> 
       </span> 
      </div> 
     </form> 
    </div> 
</div> 

我想要得到的值事務ID。我如何得到它? 我有嘗試使用此代碼:

var value = wkWebView.evaluateJavaScript("document.getElementByName('transaction_id')", completionHandler: nil) 

print("value:\(value)") 

但產量不會返回任何內容:

值:()

回答

0

兩件事情 - 你在getElementsByName代碼需要一個「S」,並返回元素的集合 - 你需要指定 - 在這種情況下,只有1,但你仍然需要指定,並得到該元素的值:

...document.getElementsByName('transaction_id')[0].value.... 
+0

沒有,它不工作,輸出仍然是相同的 – bobo

+0

我不根本不知道 - 但很正常我希望你得到的價值 - 在我看來,如果你正在得到的元素,但不是的lement的價值 - 嘗試... document.getElementsByName('transaction_id')[0] .value .... – gavgrif

+0

仍然不工作:'( – bobo

0

我認爲這是一個錯字,你應該使用getElementsByName而不是getElementByName

第二件事: 不是應該"document.getElementsByName('transaction_id').value"而非"document.getElementByName('transaction_id')"

您也可以使用它就像如果凍脹問題:

webView.evaluateJavaScript("document.getElementsByName('someElement').value") { (result, error) in 
     if error != nil { 
      print(result) 
     } 
    } 
+0

哈哈 - @Pravesh阿格拉瓦爾 - 已經發布 - 它與這些答案的比賽:) – gavgrif

+0

不,它的不工作,輸出仍然是相同的 – bobo

+0

哈哈 - @Pravesh阿格拉瓦爾 - 這一次你在我之前到達了那裏 - 我發佈了我的答案 - .value,然後看到你編輯的答案說同樣的東西:) - 但你仍然需要在那裏的[0]來指定集合中的哪個元素來引用 – gavgrif

0

我剛纔彈出它進入這個片段,並提供價值在jquery方法中(因爲你使用的是Bootstrap - 你也必須使用jQuery)和普通的javascript方法 - 兩者都起作用,所以它必須與快速內容有關。 - 也在你的輸出中 - 你確定「\」不是逃避「(」? - 它應該是print(「value:(value)」)還是轉義print(「value:\(value \)」 )或改變報價打印( 「值」(值))

$(document).ready(function(){ 
 
    var transaction_idValue1 = $('[name=transaction_id]').val(); 
 
    console.log(transaction_idValue1); 
 
    
 
var transaction_idValue2 = document.getElementsByName('transaction_id')[0].value; 
 
    console.log(transaction_idValue2); 
 
    
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container-fluid"> 
 
           <div class="panel panel-default "> 
 
      <div class="panel-body"> 
 
       <form id="coupon_checkout" action="http://uat.all.com.my/checkout/couponcode" method="post"> 
 
        <input type="hidden" name="transaction_id" value="4245"> 
 
        <input type="hidden" name="lang" value="EN"> 
 
        <input type="hidden" name="devicetype" value=""> 
 
        <div class="input-group"> 
 
         <input type="text" class="form-control" id="coupon_code" name="coupon" placeholder="Coupon Code"> 
 
         <span class="input-group-btn"> 
 
          <button class="btn btn-primary" type="submit">Enter Code</button> 
 
         </span> 
 
        </div> 
 
       </form> 
 
      </div> 
 
     </div>

0

使用SwiftSoup

let html = "<div class=\"container-fluid\">" 
    + "<div class=\"panel panel-default \">" 
    + "<div class=\"panel-body\">" 
    + "<form id=\"coupon_checkout\" action=\"http://uat.all.com.my/checkout/couponcode\" method=\"post\">" 
    + "<input type=\"hidden\" name=\"transaction_id\" value=\"4245\">" 
    + "<input type=\"hidden\" name=\"lang\" value=\"EN\">" 
    + "<input type=\"hidden\" name=\"devicetype\" value=\"\">" 
    + "<div class=\"input-group\">" 
    + "<input type=\"text\" class=\"form-control\" id=\"coupon_code\" name=\"coupon\" placeholder=\"Coupon Code\">" 
    + "<span class=\"input-group-btn\">" 
    + "<button class=\"btn btn-primary\" type=\"submit\">Enter Code</button>" 
    + "</span>" 
    + "</div>" 
    + "</form>" 
    + "</div>" 
    + "</div>" 
let document: Document = try SwiftSoup.parse(html);//parse html 
let elements = try document.select("[name=transaction_id]")//query 
let transaction_id = try elements.get(0)//select first element , 
let value = try transaction_id.val()//get value 
print(value)//4245