getElementById-Javascript

getElementById-Javascript,javascript,html,Javascript,Html,我正在使用GoogleAutoCompleteJavaScript代码来完成地址。它跟踪输入字段,获取Iddocument.getElementById('addressField')。 我遇到的问题是,输入字段的id看起来像myForm:j_idt329:addressField。 我需要在许多不同的页面这个。因此id每次看起来都不一样,但总是在末尾包含单词addressField。 是否有另一种方法来获取元素?也许用正则表达式? 以下是完整的javascript: function init

我正在使用GoogleAutoCompleteJavaScript代码来完成地址。它跟踪输入字段,获取Id
document.getElementById('addressField')
。 我遇到的问题是,输入字段的id看起来像
myForm:j_idt329:addressField
。 我需要在许多不同的页面这个。因此id每次看起来都不一样,但总是在末尾包含单词
addressField
。 是否有另一种方法来获取元素?也许用正则表达式? 以下是完整的javascript:

function initialize() {

var input = document.getElementById('addressField');
var options = {
    types: ['geocode']
};

var autocomplete = new google.maps.places.Autocomplete(input, options);

}
google.maps.event.addDomListener(window, 'load', initialize);

提前感谢。

不需要正则表达式!您可以使用
querySelector

document.querySelector("[id*='addressField']")
如果我没记错的话,选择器中的
*=
运算符会查找包含
地址字段的元素

如果您试图获取这些元素的多个节点列表,只需使用
querySelectorAll
。前者只返回列表的第一个节点,
all
返回整个列表


正如Lucas在评论中所说:
$=
将匹配属性的结尾。两者都可以工作,但不能100%确定其中一个是否比另一个好。

更好的是,
$=
将仅在属性以给定字符串结尾时匹配。@Lucastzesniewski这也是肯定的!我想知道是否有速度差?当然,你会得到一微秒的提高:)这是我以前没有的一整微秒!谢谢@Archer。很有魅力!!