如何动态传递元素id并调用javascript函数?

如何动态传递元素id并调用javascript函数?,javascript,function,dynamic,arguments,Javascript,Function,Dynamic,Arguments,我有如下javascript代码- function initPage(){ // Left Navigation Pane - moverOver effect: document.getElementById("imgHowToBuy").onmouseover = leftNavHoverIn; document.getElementById("imgNewAddition").onmouseover = leftNavHoverIn; document

我有如下javascript代码-

function initPage(){

    // Left Navigation Pane - moverOver effect:
    document.getElementById("imgHowToBuy").onmouseover = leftNavHoverIn;
    document.getElementById("imgNewAddition").onmouseover = leftNavHoverIn; 
    document.getElementById("imgMostPopular").onmouseover = leftNavHoverIn;
    document.getElementById("imgOffer").onmouseover = leftNavHoverIn;   
    document.getElementById("imgRecentlySold").onmouseover = leftNavHoverIn;
.....
}
基本上我的代码工作正常(函数被调用并执行得很漂亮)。但我不认为我在这里使用了最佳实践的原则。继续调用同一个函数看起来有点奇怪;我是否可以通过某种方式将元素的id作为参数传递,然后执行函数,从而将整个过程简化为一行代码

我是自学成才的js男生:D


谢谢

您可以这样做:

function assignMouseOver(elem) {
  document.getElementById(elem).onmouseover = leftNavHoverIn;
}

assignMouseOver("imgHowToBuy"); // etc
您还可以将元素ID作为数组传入,并在函数内循环数组,这会将其减少为一行(可见)代码:

函数赋值鼠标器(elems){
如果(元素长度>0){

对于(var i=0;i您可以这样做:

function assignMouseOver(elem) {
  document.getElementById(elem).onmouseover = leftNavHoverIn;
}

assignMouseOver("imgHowToBuy"); // etc
您还可以将元素ID作为数组传入,并在函数内循环数组,这会将其减少为一行(可见)代码:

函数赋值鼠标器(elems){
如果(元素长度>0){
对于(var i=0;i尝试以下方法:

var ids = ["imgHowToBuy", "imgNewAddition", "imgMostPopular", "imgOffer", "imgRecentlySold"]

var setMouseover = function (id) {
    document.getElementById(id).onmouseover = leftNavHoverIn;
};

for(var i=0;i<ids.length;i++) {
    setMouseover(ids[i]);
}
var id=[“imgHowToBuy”、“imgNewAddition”、“imgmostpowpopular”、“imgOffer”、“imgRecentlySold”]
var setMouseover=函数(id){
document.getElementById(id).onmouseover=leftNavHoverIn;
};
对于(var i=0;i尝试以下方法:

var ids = ["imgHowToBuy", "imgNewAddition", "imgMostPopular", "imgOffer", "imgRecentlySold"]

var setMouseover = function (id) {
    document.getElementById(id).onmouseover = leftNavHoverIn;
};

for(var i=0;i<ids.length;i++) {
    setMouseover(ids[i]);
}
var id=[“imgHowToBuy”、“imgNewAddition”、“imgmostpowpopular”、“imgOffer”、“imgRecentlySold”]
var setMouseover=函数(id){
document.getElementById(id).onmouseover=leftNavHoverIn;
};
对于(var i=0;i您不是在“调用同一个函数”,您只是将单个函数分配给页面上的许多元素。我看不出有什么特别的错误

您可以存储要将此函数分配给的所有元素的id,这将减少代码行数,但没有具体的理由这样做

var leftNavElements = ["imgHowToBuy","imgNewAddition"]; // etc....
for(var i=0;i<leftNavElements.length;i++){
    document.getElementById(leftNavElements[i]).onmouseover = leftNavHoverIn;
}
var leftNavElements=[“imgHowToBuy”、“imgNewAddition”];//等等。。。。
对于(var i=0;i您不是在“调用同一个函数”,您只是将单个函数分配给页面上的许多元素。我看不出有什么特别的错误

您可以存储要将此函数分配给的所有元素的id,这将减少代码行数,但没有具体的理由这样做

var leftNavElements = ["imgHowToBuy","imgNewAddition"]; // etc....
for(var i=0;i<leftNavElements.length;i++){
    document.getElementById(leftNavElements[i]).onmouseover = leftNavHoverIn;
}
var leftNavElements=[“imgHowToBuy”、“imgNewAddition”];//等等。。。。

对于(var i=0;i),您的HTML标记是什么?您的HTML标记是什么?