作为我拥有的标题:
var contentString ='< h3 id="demo">< /h3>;
我想更改“演示”的内容,但不知道该怎么做 任何好的建议将不胜感激。
答案 0 :(得分:2)
我认为你应该考虑创建一个节点,而不是创建一个“字符串节点”。就像那样:
var node = document.createElement('h3');
node.id = 'demo'
node.innerHTML = 'hello';
document.getElementsByTagName('body')[0].appendChild(node);
答案 1 :(得分:1)
你的html无效,'&lt;'之间应该没有空格和'h3'。
var contentString ='<h3 id="demo"> text </h3>';
更改后,html的属性是标准的。我在jQuery中这样做过:
var contentString ='<h3 id="demo"> text </h3>';
contentString = $(contentString).attr('id', "mynewid");
答案 2 :(得分:0)
您可以通过以下方式定义函数:
function changeAttrValue(str,attrName,oldAttrVal,newAttrVal){
return str.replace(new RegExp(attrName+'="'+oldAttrVal+'"'),attrName+'="'+newAttrVal+'"');
}
changeAttrValue('< h3 id="demo">< /h3>','id','demo','otherId'); // -> '< h3 id="otherId">< /h3>'
changeAttrValue('< h3 class="head">< /h3>','class','head','otherClass'); // -> '< h3 class="otherClass">< /h3>'
我实际上并不是这种符号的朋友:
new RegExp
我建议您使用这样的文字:
/\w+/, /\d{1,2}/
但是对于函数changeAttrValue我找不到更好的解决方案,对不起...... 然而
P.S。为了使函数有效,请不要写:
id='demo'
写:
id="demo"
我希望这对你有所帮助,你希望以这种方式实现它。
答案 3 :(得分:0)
有很多方法可以通过字符串向Javascript中的元素添加内容。
一个简单的方法是放置一个可以在以后替换的令牌:
var contentString ='<h3 id="demo">__CONTENT__</h3>';
var newContent = 'foo';
contentString = contentString.replace('__CONTENT__', newContent);
或者您可以将代码划分为多个变量并将它们连接起来:
var contentString1 = '<h3 id="demo">';
var contentString2 = '</h3>';
var newContent = 'foo';
var contentString = contentString1 + newContent + contentString2;
您还可以使用JQuery,创建DOM元素并添加内容:
var contentString ='<h3 id="demo"></h3>';
var $el = $(contentString);
var newContent = 'foo';
$el.html(newContent);
您可以在contentString中考虑多个标记:
var contentString ='<h1>...</h1><h3 id="demo"></h3>';
var newContent = 'foo';
//Create a div wrapper
var $wrapper = $('<div>');
//Add all the content
$wrapper.html(contentString);
//get the element with id "demo"
var $el = $wrapper.find("#demo");
//add content to that element
$el.html(newContent);
//get a string once again with the new content
contentString = $wrapper.html();