[英]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.