簡體   English   中英

使用Javascript / jQuery訪問ID屬性不正確的HTML元素

[英]Using Javascript/jQuery to access HTML elements with improper id attribute

我正在為某人創建一個Greasemonkey腳本,以更改其CRM(Zoho)創建的某些字段的顯示,因為他們無權更改呈現的HTML。

這應該很容易,但是Zoho認為創建正確的HTML會讓我感到非常痛苦,他們的HTML包含以下內容:

<input type="text" maxlength="50" style="width: 100%;" class="textField" id="property(Phone)" name="property(Phone)"/>

ID包含空格和括號,在ID屬性中無效,並且阻止了我使用document.getElementById()選擇它們或使用jQuery選擇它們。

有人對我如何掌握該要素有任何想法嗎? 顯然,我可以通過其父元素中的索引或遍歷DOM來獲取它,但是這兩者都意味着如果更改字段的順序,Greasemonkey腳本將停止正常工作,因為這將針對錯誤的元素。

這是什么瀏覽器? 我想是Firefox,因為您提到了GreaseMonkey。 但是document.getElementById("property(Phone)")在Firefox 3.5中似乎可以正常工作。

您可以這樣逃避括號:

$("#property\\(Phone\\)")

您可以使用反斜杠轉義空格和括號:

$('#property\\(Phone\\)').val('jQuery selected property(Phone)!');
$('#ab\\ cd\\ ef').val('jQuery selected ab cd ef!');

您始終可以執行document.getElementsByTagName('input'),然后瀏覽結果並將其與屬性(如類型和名稱,類...)進行匹配。 效率不是很高,但是我知道的唯一方法可以處理任何訂單(因為id無效)...

var inputs = document.getElementsByTagName('input');
if (inputs)
    for (var i = 0; i < inputs.length; i++)
        if (inputs[i].type == 'text' && inputs[i].name == 'SearchValue')
            return inputs[i];

我很確定JQuery(或任何其他好的框架)都具有與該代碼段相同的功能...

jQuery可能無法使用#id語法找到它,但可能可以使用tagName [id = value]語法找到它...試試吧,祝您好運。 請參閱jQuery文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM