使用Javascript / jQuery访问具有不正确id属性的HTML元素

时间:2010-01-07 18:15:22

标签: javascript jquery html zoho

我正在为某人创建一个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脚本将停止正常工作,因为它将针对错误的元素

5 个答案:

答案 0 :(得分:1)

这是什么浏览器?我认为Firefox,因为你提到了GreaseMonkey。但document.getElementById("property(Phone)")似乎在Firefox 3.5中运行良好。

答案 1 :(得分:1)

您可以像这样转义括号:

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

答案 2 :(得分:1)

您可以使用反斜杠转义空格和括号:

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

答案 3 :(得分:0)

你总是可以做一个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(或任何其他优秀的框架)与此代码段等效...

答案 4 :(得分:0)

JQuery可能无法使用#id语法找到它,但可能使用tagName [id = value]语法找到它...尝试一下,祝你好运。请参阅jQuery doc