我想在页面中添加每个选择标记:
onfocus='this.size=10;' onblur='this.size=1;' onchange='this.size=1; this.blur();'
在头部使用js。
我试过了:
<script>
// onfocus='this.size=10;' onblur='this.size=1;' onchange='this.size=1; this.blur();'
var sels = document.getElementsByTagName("select");
for(var i=0; i<sels.length;i++){
sels[i].onfocus=function() {
sels[i].setAttribute("size","10");
}
sels[i].onblur=function() {
sels[i].setAttribute("size","1");
}
sels[i].onchange=function() {
sels[i].setAttribute("size","1");
sels[i].blur();
}
}
</script>
它不起作用。你能帮助我吗?感谢。
答案 0 :(得分:0)
您可以使用this
引用当前选择元素:
var sels = document.getElementsByTagName("select");
for (var i = 0; i < sels.length; i++) {
sels[i].onfocus = function () {
this.setAttribute("size", "10");
}
sels[i].onblur = function () {
this.setAttribute("size", "1");
}
sels[i].onchange = function () {
this.setAttribute("size", "1");
this.blur();
}
}
或者您可以使用立即函数将当前索引i
值存储到闭包中。否则,在事件i
等于sels.lenght
且sels[i]
未定义时。
var sels = document.getElementsByTagName("select");
for (var i = 0; i < sels.length; i++) {
(function(i) {
sels[i].onfocus=function() {
sels[i].setAttribute("size","10");
}
sels[i].onblur=function() {
sels[i].setAttribute("size","1");
}
sels[i].onchange=function() {
sels[i].setAttribute("size","1");
sels[i].blur();
}
})(i);
}
答案 1 :(得分:0)
这很有效。您需要使用“this”来引用焦点中的选择。
<script>
var sels = document.getElementsByTagName("select");
for(var i=0; i<sels.length;i++){
sels[i].onfocus=function() {
this.setAttribute("size","10");
}
sels[i].onblur=function() {
this.setAttribute("size","1");
}
sels[i].onchange=function() {
this.setAttribute("size","1");
this.blur();
}
}
</script>
答案 2 :(得分:0)
更清洁/更有效的方法是使用.each()迭代和当前迭代的'this'关键字
$('select').each(function (){
$(this).onfocus = function () {
this.setAttribute("size", "10");
}
$(this).onblur = function () {
this.setAttribute("size", "1");
}
$(this).onchange = function () {
this.setAttribute("size", "1");
this.blur();
}
});