如何使用JavaScript为图像src添加参数?

时间:2014-12-16 21:56:56

标签: javascript html

换句话说,如何将一个参数传递给一个函数,并将它放在一个在同一个代码中定义的src的中间?

注意:没有jQuery 。谢谢。

这是我的代码:

JavaScript的:

<script>
var icons = document.getElementsByClassName( 'icon' ); // All elements of the "icon" class.
var x, y; // Counters.

/* The purpose of the below function is to assign images to 8 members of the same 
class, given a piece of the image name from an argument passed to a function. */

function example ( test1, test2, test3, test4, test5, test6, test7, test8 )
{
    for ( x = 0; x < arguments.length, y < (y + 8); x++, y++ )
    {
        icons[y].src = 'http://example.com/img/' + arguments[x] + '.jpg';
    }
}
</script>

HTML:

<img class="icon" src="" />
<img class="icon" src="" />
<img class="icon" src="" />
<img class="icon" src="" />
<img class="icon" src="" />
<img class="icon" src="" />
<img class="icon" src="" />
<img class="icon" src="" />
<img onclick="example(1, 2, 3, 4, 5, 6, 7, 8)" src="example.jpg" />

2 个答案:

答案 0 :(得分:2)

它不是100%清楚为什么它不适合你。我的第一个猜测是你没有正确构建URL字符串。您正在创建的网址如下所示:

http://example.com/img/1.jpg
http://example.com/img/2.jpg
http://example.com/img/3.jpg

此外,您的for循环以及该循环中的y测试还有一些有趣的业务。您可以通过更改为:

来清理它(如果导致问题)
function go(/* args go here */) {
    var icons = document.getElementsByClassName("icon");
    for(var x = 0; x < arguments.length; x++)
        icons[x].src = "http://example.com/img/" + arguments[x] + ".jpg";
}

以下是更改和原因:

  1. 我删除了y循环的for部分,因为y < (y + 8)始终为真,所以没有必要将其作为for的测试环。
  2. 我也从未见过您初始化y的任何地方。
  3. 您使用的是逗号运算符,而不是&&运算符,这似乎也是错误的。 if条件中的多个条件应使用布尔运算符,而不是逗号运算符。
  4. x是全球性的。我将其更改为局部变量,因为它已在本地初始化并使用,并且它对于全局变量来说是一个危险的名称。
  5. 由于不再使用icons[x],因此已更改为y
  6. icons的定义和初始化移到了函数中,因为我认为没有必要成为全局函数。
  7. 删除了参数的定义,因为未使用命名参数。
  8. 如果,你要做的就是确保你没有超过最后一个图标,那么你的循环可以就是这样:

    function go(/* args go here */) {
        var icons = document.getElementsByClassName("icon");
        for (var x = 0; x < arguments.length && x < icons.length; x++)
            icons[x].src = "http://example.com/img/" + arguments[x] + ".jpg";
    }
    

    然后,最后如果您要做的就是将URL创建为序列,您只需传递开始和结束序列号:

    function go(begin, end) {
        var icons = document.getElementsByClassName("icon");
        for (var x = 0; x < icons.length && begin <= end; x++, begin++)
            icons[x].src = "http://example.com/img/" + begin + ".jpg";
    }
    
    go(1, 8);
    

答案 1 :(得分:0)

您可以将参数作为URL参数(querystring)传递。

<img src="myImage.png?test1=bla&test2=3&test4=blablala&test5=etc" />

然后您可以像这样检索它们:

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

https://stackoverflow.com/a/901144/2407212

你能解释一下你想要达到的目标吗?