简体   繁体   English

JavaScript-未捕获的ReferenceError:我的函数未定义

[英]JavaScript - Uncaught ReferenceError: my function is not defined

can somebody help why i get this error? 有人可以帮助我为什么会收到此错误吗?

Uncaught ReferenceError: selected_1 is not defined 未捕获的ReferenceError:未定义selected_1

Uncaught ReferenceError: selected_2 is not defined 未捕获的ReferenceError:未定义selected_2

Here is my code: 这是我的代码:

<img src="/css/img/firstRoom_selected.png" onclick="selected_1()" id="firstRoom" style="cursor:pointer;">
<img src="/css/img/secondRoom.png" onclick="selected_2()" style=" cursor:pointer;">

<script>
$( document ).ready(function() {
  function selected_1() {

    if (document.getElementById("firstRoom").src == "/css/img/firstRoom.png") 
    {
        document.getElementById("firstRoom").src = "/css/img/firstRoom_selected.png";
    }
}

  function selected_2() {

    if (document.getElementById("firstRoom").src == "/css/img/firstRoom_selected.png") 
    {
        document.getElementById("firstRoom").src = "/css/img/firstRoom.png";
        document.getElementById("secondRoom").src = "/css/img/secondRoom_selected.png";
    }
}
});
</script>

Thanks a lot in advance! 在此先多谢! :) :)

Your no need to use $( document ).ready 您无需使用$( document ).ready

<img src="/css/img/firstRoom_selected.png" onclick="selected_1()" id="firstRoom" style="cursor:pointer;">
<img src="/css/img/secondRoom.png" onclick="selected_2()" style=" cursor:pointer;">

And js: 和js:

<script>
  function selected_1() {

    if (document.getElementById("firstRoom").src == "/css/img/firstRoom.png") 
    {
        document.getElementById("firstRoom").src = "/css/img/firstRoom_selected.png";
    }
}

  function selected_2() {

    if (document.getElementById("firstRoom").src == "/css/img/firstRoom_selected.png") 
    {
        document.getElementById("firstRoom").src = "/css/img/firstRoom.png";
        document.getElementById("secondRoom").src = "/css/img/secondRoom_selected.png";
    }
}
</script>

It'd be better to do it like this: 最好这样做:

$(function(){
    $('#firstRoom').click(selected_1)
})

You've defined your functions inside another anonymous function using $document.ready , hence it's not visible to the global scope. 您已经使用$document.ready在另一个匿名函数中定义了函数,因此它在全局范围内不可见。

Your images are looking for selected_1 and selected_2 in the global scope and hence couldn't find it. 您的图像正在全局范围内寻找selected_1selected_2 ,因此找不到它。

define your function outside $(document).ready handler $(document).ready处理程序之外定义函数

if you wish to use functions within handler then attach click handlers within ready function. 如果您希望在处理程序中使用函数,则将点击处理程序附加在ready函数中。 try this script 试试这个脚本

you should also look into preloading images, that will be another question. 您还应该考虑预加载图像,这将是另一个问题。

<script>
  function selected_1() {
    if (document.getElementById("firstRoom").src == "/css/img/firstRoom.png") {
        var image = new Image()
        image.src = "/css/img/firstRoom_selected.png";
        document.getElementById("firstRoom").src = image.src
    }
}

  function selected_2() {
    if (document.getElementById("firstRoom").src == "/css/img/firstRoom_selected.png") {
        var image = new Image()
        image.src = "/css/img/firstRoom.png";
        document.getElementById("firstRoom").src = image.src

        var image2 = new Image()
        image2.src = "/css/img/secondRoom_selected.png";
        document.getElementById("secondRoom").src = image2.src
    }
}
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM