如果元素是由外部JavaScript脚本生成的,则答案会更加复杂。你需要首先找到该元素,因此按id和class查找方法不起作用,除非它们已经有一个 - 请参见下面的type解决方案。
按id查找:
建议使用以下代码,需要向输入提交添加一个id,例如:
<input type="submit" id="submit">
以便可以引用它。
var foo = document.getElementById('submit');
foo.onmouseover = function() {this.style.borderColor='#000000'; this.style.color='#000000';}
foo.onmouseout = function() {this.style.borderColor='#888888'; this.style.color='#888888';}
foo.onclick = function() {this.style.borderColor='#000000'; this.style.color='#000000';}
但是以下方法也应该有效:
通过class
查找:
你需要指定一个类,例如 <input type="submit" class="submit">
在这种情况下。
getElementsByClass
不会查找 type
,它只会查找 class
。
<script type="text/javascript">
function getElementsByClass(node,searchClass,tag) {
var classElements = new Array();
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("\b"+searchClass+"\b");
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
var foo = getElementsByClass(document.body, 'submit', 'input')[0];
foo.onmouseover = function() {this.style.borderColor='#000000'; this.style.color='#000000';}
foo.onmouseout = function() {this.style.borderColor='#888888'; this.style.color='#888888';}
foo.onclick = function() {this.style.borderColor='#000000'; this.style.color='#000000';}
</script>
按类型查找:
如果您使用以下方式,则可以按 type
查找:
function getElementByType(node,type,tag) {
var els = node.getElementsByTagName(tag);
for (var x=0, x<els.length; x++) {
if (els[x].type && els[x].type.toLowerCase() == type) {
return els[x]
}
}
}
var foo = getElementByType(document.body, 'submit', 'input')
...
我会做的是:
<div id="externalElms">
(<script> here)
</div>
然后使用var foo = getElementByType(document.getElementById('externalElms'), 'submit', 'input')
,这样它就不必遍历页面上的每个元素。
document.getElementByClass('input.submit');
或者document.getElementByClass('submit');
无法工作,对吗? - Dan