var str = prompt("What is your name?");
var str1=$(str).html('<b>'+str+'</b>');
alert(str1);
通过上面的代码,我得到[object object]
作为输出,。请帮忙
答案 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对象,而不是一个字符串。
干杯