jquery输出id显示为[object object]

时间:2011-05-06 08:11:52

标签: javascript jquery

var str = prompt("What is your name?");
var str1=$(str).html('<b>'+str+'</b>');
alert(str1);

通过上面的代码,我得到[object object]作为输出,。请帮忙

6 个答案:

答案 0 :(得分:2)

alert(str1.html()); 

就是你所追求的。

jquery中的每个函数都返回一个jquery对象,所以

.html('<b>'+str+'</b>') 

返回一个对象,而不是元素内的文本。

答案 1 :(得分:2)

首先,让我们在jQuery API中查找html()

它有两种变体。如果传递参数,则方法签名为:

.html( htmlString ) Returns: jQuery 

因此它返回一个jQuery对象。对象没有任何有趣的内容显示在警报内。现在,您可以用表示DOM节点的jQuery对象做什么?好吧,你可以read back their HTML code

alert(myNode.html());

......或者你可以read their plain text value

alert(myNode.text());

现在,让我们看看你的代码:

var str = prompt("What is your name?");

由于prompt()返回一个字符串(如果用户输入内容并点击确定)或null(如果用户点击取消) ,str将是一个任意字符串或null

var str1=$(str)

您正在使用任意字符串调用jQuery,因此您将获得一个任意jQuery对象。如果用户输入john,您将运行$("john")。这意味着:匹配包含<john></john>标记的任何元素。如果用户键入<h1>Hi</h1>,您将创建第一级标题。等等...

               .html('<b>'+str+'</b>');

现在,您可以选择第一步中的所有内容,并告诉jQuery将其HTML更改为某些任意内容:.html("<b>john</b>").html("<b><h1>Hi</h1></b>") ...

alert(str1);

......到目前为止我们没有任何兴趣; - )

答案 2 :(得分:1)

这是正确的,因为您正在设置HTML,然后函数返回jQuery对象

var str1=$(str).html('<b>'+str+'</b>').html();

现在str1将包含HTML字符串。

编辑: 但正如DarthJDG所指出的那样,正确地将一个字符串(prompt()的返回值)包装到一个jQuery对象中,并且将一些HTML设置为它并没有真正的风格。

答案 3 :(得分:0)

语句$(str).html('<b>'+str+'</b>');正在设置html的{​​{1}},然后从通话中返回$(str)(用于查询目的)。

我拒绝提出解决方案因为我不完全确定你想要实现的目标。你的问题可以更明确吗?

答案 4 :(得分:0)

是的,这正是您应该期待的。通过将参数传递给.html(),您可以调用返回jQuery的方法(即对象)。

如果您要返回元素的(HTML),则应alert(str1.html()),因此invoking the method返回string

答案 5 :(得分:0)

你应该这样做:

alert($(str).html()); 

你的代码无效,因为$(str).html('<b>'+str+'</b>');返回一个jquery对象,而不是一个字符串。

干杯