单击时触发功能

时间:2013-09-18 19:44:56

标签: javascript html

如何触发此功能:

<script>
        function change(x) {
    var target = document.getElementById("target");

         if (y == "imgA") {target.className = "cast1";}
    else if (y == "imgB") {target.className = "cast2";}
    else if (y == "imgC") {target.className = "cast3";}
    else if (y == "imgD") {target.className = "cast4";}
    else {target.className = "chart";}
}

function changeReset() {
    var target = document.getElementById("target");
    target.className = "chart";
}
</script>

仅在按下此按钮时才会发生?

<div class='nfooter' style="position:float;"><a id="c_question" href="#"><img src="../name_footer/_name.png" /></a></div>

2 个答案:

答案 0 :(得分:1)

onclick="change()"添加到元素中。

编辑:

function change(x) {
    if(x=="something"){
        var target = document.getElementById("target");

        if (y == "imgA") {target.className = "cast1";}
        else if (y == "imgB") {target.className = "cast2";}
        else if (y == "imgC") {target.className = "cast3";}
        else if (y == "imgD") {target.className = "cast4";}
        else {target.className = "chart";}
   }
}

或者,如果您只想在特定元素调用时允许函数执行,则可以检查元素。 this引用将引用拥有该函数的元素。

function change(x) {
    if(this.id == "target")
        var target = document.getElementById("target");

        if (y == "imgA") {target.className = "cast1";}
        else if (y == "imgB") {target.className = "cast2";}
        else if (y == "imgC") {target.className = "cast3";}
        else if (y == "imgD") {target.className = "cast4";}
        else {target.className = "chart";}
   }
}

EDIT2:

通常你会使用element.onclick进行绑定,但是当使用内联声明时,this引用会引用窗口。

此处详细信息http://www.quirksmode.org/js/this.html

如果没有太多更改代码,您可以按照以下建议稍微更改您的功能。

function change(element,x) {
    if(element.id=="target"){
        var target = document.getElementById("target");

        if (y == "imgA") {target.className = "cast1";}
        else if (y == "imgB") {target.className = "cast2";}
        else if (y == "imgC") {target.className = "cast3";}
        else if (y == "imgD") {target.className = "cast4";}
        else {target.className = "chart";}
   }
}

然后更改内联onclick以传递对元素的引用。 onclick="change(this,'target')"

一般来说,使用内联onclick声明被认为是不好的做法。所以考虑在脚本中进行点击绑定。

答案 1 :(得分:1)

在函数定义和函数调用中添加另一个参数对象&#39;这个&#39; 并通过id检查函数定义,object.id是你所希望的。你得到了逻辑。