1

我有点在 .html(); 中调用一个变量;但它不能正常工作。

var cap2 = "Here is a muddy truck.";
id = $(this).attr("id");
$("#caption").html("cap"+id); // this literally outputs "cap2" into my caption div

显然这不是完整的代码,但我认为它足以让知识渊博的人指出我正确的方向。

我还应该注意最后一行何时看起来像这样

$("#caption").html(cap2); // this correctly outputs "Here is a muddy truck"

一切都很好,但我需要数字槽是动态的。有什么想法吗?

4

7 回答 7

4

如果您的cap2变量是全局声明的,您可以使用:

$("#caption").html(window["cap"+id]);
于 2012-10-29T18:46:05.200 回答
0

您必须使用“邪恶”评估功能:

$("#caption").html(eval("cap"+id)); 

邪恶,因为它可以做各种危险的事情!

于 2012-10-29T18:45:04.890 回答
0

在 javascript 中,'+' 用于连接字符串,并且由于函数接收字符串参数,因此您将其“cap2”作为字符串发送,而不是变量。
eval()方法将获取您给它的字符串并像代码一样运行它,因此,将“cap2”变量发送给该.html()方法。

$("#caption").html(eval("cap"+id));
于 2012-10-29T18:45:13.923 回答
0

javascript 函数eval接受一个字符串 a 将其评估为 javascript 变量、函数等。使用.html(eval("cap"+id));

于 2012-10-29T18:46:24.387 回答
0

只是一个通常如何处理此类事情的示例:

<a href="#" id="a0"></a>
<a href="#" id="a1"></a>
<a href="#" id="a2"></a>
<a href="#" id="a3"></a>

$('a').on('click', function(e) {
    e.preventDefault();
    var caps = [
                "Here is a muddy truck.",
                "Here is a strange duck",
                "Here is the proper code",
                "Here's Johnny"
                ],
         id = this.id.replace('a','');

    $("#caption").html(caps[id]);
});

最好在 click 函数之外声明数组,但这只是一个例子!

于 2012-10-29T18:52:57.243 回答
0

Adeneo 的评论可能是迄今为止最有帮助的。如果您必须引用具有不同数字的变量,请按正确的顺序创建一个数组并调用索引:

var caption = $('#caption'), // no use writing a variable on each action
    caps = [
        "Here is a muddy truck.",
        "another caption"
    ]; // fill with your captions

$(document).on('click', 'a', function() {
    caption.html(caps[this.id]);
});
于 2012-10-29T18:53:47.807 回答
0

为什么不把你的字符串粘贴到散列中呢?这样您就不必对 id 进行任何算术运算。

于 2012-10-29T19:20:30.643 回答