0

我有一段非常简单的代码,它应该改变我称为 innings 的 img 的 img src。很简单,onclick 我调用函数changeImage,根据src图像的当前,我将其更改为图像的下一次迭代。代码如下所示:

    <script type="text/javascript" >
        function changeImage() {
            var mySrc = document.getElementById('inning');
            alert(mySrc.src);
            if (mySrc.src = "1st.png") {
                alert('im in here');
                mySrc.src = "2nd.png";
            }
            else if (mysrc.src = "2nd.png")
                mysrc.src = "3rd.png";
            else if (mysrc.src = "3rd.png")
                mysrc.src = "4th.png";
            else if (mysrc.src = "4th.png")
                mysrc.src = "5th.png";
            else if (mysrc.src = "5th.png")
                mysrc.src = "6th.png";
            else if (mysrc.src = "6th.png")
                mysrc.src = "7th.png";
            else if (mysrc.src = "7th.png")
                mysrc.src = "8th.png";
            else if (mysrc.src = "8th.png")
                mysrc.src = "9th.png";
            else if (mysrc.src = "9th.png")
                mysrc.src = "10th.png";
            else if (mysrc.src = "10th.png")
                mysrc.src = "1st.png";

        }
    </script>
</head>
<body>
    <center>      <label>SlowPitch Player Rotation</label></center>
    <br /><br />

    <Center>
        <img id="inning" src="1st.png" 
                onclick='changeImage()' />
    </Center>

现在我遇到的问题是,每次我点击图像时,该changeImage()功能都会触发警报,让我知道src仍然是1st.png;同时我的第一个警报告诉我,我有2nd.png我的src.

4

4 回答 4

6

您正在使用=哪个是分配。该值被分配给变量;您想检查 if 语句中的相等性。使用==(它们是否相等?)或===(它们是否相等且类型相同?)。

于 2013-05-09T21:58:31.497 回答
4

所有的if (mySrc.src = "image_name") {应该是

if (mySrc.src == "1st.png") {

两个 == 表示等于

一 = 表示将值设置为

于 2013-05-09T21:58:53.390 回答
1

正如其他人所说,您的主要问题是没有使用权利=====进行比较,并且引用.src属性将返回绝对路径,因此您的比较可能也不会因此而起作用。

无论如何,我会建议一个新的更紧凑的代码设计,你可以像这样干掉你的代码(删除冗余)。

这会从字符串中解析出数字,而不是检查保存所有if/else比较的精确匹配,一旦有了数字,就可以通过直接索引到名称数组来获得下一个名称。

<script type="text/javascript" >
    function changeImage() {
        var names = ["1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "10th"];
        var mySrc = document.getElementById('inning');
        // parse the number out of the existing .src string
        var matches = mySrc.src.match(/(\d+).*?\.png$/);
        if (matches) {
            // since array is 0 indexed and names are 1 indexed, we don't need to add one
            // as it is already one more than it was
            var num = parseInt(matches[1], 10);
            if (num >= names.length) {
                num = 0;
            }
            mySrc.src = names[num] + ".png";
        }
    }
</script>

仅供参考,如果您的文件名中只有数字(如img1.png)而没有后缀,那么代码可能会更简单,因为您甚至不需要名称数组,因为您可以从前一个数字制造新名称.

于 2013-05-09T22:09:47.083 回答
0

您的问题是,您不在 if 语句中比较两个值,而是分配一个值:

if (mySrc.src = "1st.png")

应该读

if (mySrc.src === "1st.png")

否则,您一遍又一遍地将“1st.png”分配给 mySrc.src。

于 2013-05-09T22:00:33.723 回答