【问题标题】:stringByEvaluatingJavaScript object has no IDstringByEvaluatingJavaScript 对象没有 ID
【发布时间】:2017-07-07 22:40:26
【问题描述】:

我正在使用self.webView.stringByEvaluatingJavaScript(from: "document.getElementById('username').value = \"\(username)\"") 输入用户名,它工作正常。

另一个网页有这个字段:

<input type="text" maxlength="255" name="user" class="stdWidth" value="">

还有这个字段:

<input type="password" maxlength="255" password="1" name="pass" class="stdWidth">

我如何使用stringByEvaluatingJavaScript 将文本放入此字段,因为它没有 ID?

我试过"document.getElementByTagName",但没有用。

我要输入的网页是:Link

【问题讨论】:

    标签: javascript webview swift3 stringbyevaluatingjavascr


    【解决方案1】:

    像这样尝试。你有class 字段,所以使用document.querySelector() 选择你的元素。下面的示例。

    var input = document.querySelector(".stdWidth");
    input.value = "\"Hello\"";
    //add event listener on edit like this..
    input.addEventListener('change',function(){
    var value = this.value;
    console.log(value);//this is current value of your field
    });
      
    &lt;!-- begin snippet: js hide: false console: true babel: false --&gt;

    更新

    getElementsByTagName() 方法以 NodeList 对象的形式返回文档中具有指定标记名称的所有元素的集合。

    var input = document.getElementsByTagName('input');
    input[0].value = "\"username\"";
    input[1].value = "\"password\"";
    <input type="text" maxlength="255" name="user" class="stdWidth" value="">
    <input type="text" maxlength="255" name="pass" class="stdWidth" value="">

    【讨论】:

    • self.webView.stringByEvaluatingJavaScript(from: "document.querySelector('.stdWidth').value = \"\(username)\"") 完成了这项工作 - 谢谢!
    • 是的,使用document.querySelector(),因为您有class 字段。然后像在id 中一样设置值。
    • &lt;input type="password" maxlength="255" password="1" name="pass" class="stdWidth"&gt;我也想编辑这个框,但是它没有价值——你能告诉我怎么编辑吗?
    • 是的,您可以编辑您必须在您的textbox 上处理change 事件。
    • 我该怎么做?你能给我一些示例代码吗?
    猜你喜欢
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多