Javascript 如何更新对象中字符串中的html元素?
我很难做一些看起来很简单的事情。 我有一个javascript对象:Javascript 如何更新对象中字符串中的html元素?,javascript,jquery,Javascript,Jquery,我很难做一些看起来很简单的事情。 我有一个javascript对象: var main = { pages : { "123" : { "content": "<div><p>The div</p></div><nav><p>The nav</p></nav>", "foo":"bar" }, "4
var main = {
pages : {
"123" : {
"content": "<div><p>The div</p></div><nav><p>The nav</p></nav>",
"foo":"bar"
},
"456" : {
"content": "<div><p>The div</p></div><nav><p>The nav</p></nav>",
"foo":"bar"
}
}
};
var main={
页码:{
"123" : {
“内容”:“div导航”,
“foo”:“bar”
},
"456" : {
“内容”:“div导航”,
“foo”:“bar”
}
}
};
我正在尝试以下代码:
$(function(){
var p = main.pages;
$.each(p,function(i,el){
var c = p[i].content;
var newc = $(c).find('nav').html('<p>New content</p>');
//console.log(c);
//console.log(newc);
});
//console.log(p)
});
$(函数(){
var p=主页;
$。每个(p,函数(i,el){
var c=p[i].内容;
var newc=$(c).find('nav').html('newcontent');
//控制台日志(c);
//console.log(newc);
});
//console.log(p)
});
要使我的对象看起来像:
var main = {
pages : {
"123" : {
"content": "<div><p>The div</p></div><nav><p>New content</p></nav>",
"foo":"bar"
},
"456" : {
"content": "<div><p>The div</p></div><nav><p>New content</p></nav>",
"foo":"bar"
}
}
};
var main={
页码:{
"123" : {
“内容”:“div新内容”,
“foo”:“bar”
},
"456" : {
“内容”:“div新内容”,
“foo”:“bar”
}
}
};
但我很难做到这一点。我错过了什么
前一个例子我是在英国树立起来的
我确实理解,尝试将字符串作为dom元素进行操作通常不是一个好主意,但我没有其他选择,因为对象来自RESTful服务器,因此在当前页面中插入html对此没有多大意义。实际上可以
$(函数(){
var p=主页;
//临时分居
var div=$('');
$。每个(p,函数(i,el){
//附加到div,查找并替换HTML
div.append(p[i].content.find('nav').html(“新内容””);
//将其变回字符串并存储
p[i].content=div.html();
//为下一个操作清空div
div.empty();
});
控制台日志(p);
});
因为$(p[i].content)
不是一个元素而是两个元素,所以根据您的代码:
var tmp = $(p[i].content);
tmp.eq(1).html('<p>new content');
console.log(tmp.html());
var tmp=$(p[i].content);
html(“新内容”);
log(tmp.html());
如果我运行上面的代码,我会得到Object 123:Object content:“divnav”foo:“bar”456:Object content:“divnavfoo:“bar”
-那么它能满足你的问题你有一个js对象,你正试图生成它?你能澄清一下吗?再看一遍,字符串不一样。在预期的对象中,nav标记中的html是不同的,从“nav”更改为“新内容”。我可以知道您在代码上方实际想要什么。事实上,由于我在循环中获取内容,每次只有一个元素。我没有测试它,但我相信它也能工作,因为它类似于约瑟夫的答案。非常感谢@Robyflc:Put$(main.pages['123'].content)
在控制台中,您会发现它返回一个包含2个元素的集合,其中
作为第二个元素的根元素。这将导致休耕。find('nav')
正在搜索
的子节点,因此它与任何内容都不匹配。很抱歉。一开始我完全误解了你的意思。非常感谢!你救了我一天!!
var tmp = $(p[i].content);
tmp.eq(1).html('<p>new content');
console.log(tmp.html());