将html更改为var

时间:2013-06-16 16:01:51

标签: javascript html

作为我拥有的标题:

var contentString ='< h3 id="demo">< /h3>;

我想更改“演示”的内容,但不知道该怎么做 任何好的建议将不胜感激。

4 个答案:

答案 0 :(得分:2)

我认为你应该考虑创建一个节点,而不是创建一个“字符串节点”。就像那样:

var node = document.createElement('h3');
node.id = 'demo'
node.innerHTML = 'hello';
document.getElementsByTagName('body')[0].appendChild(node);

小提琴:http://jsfiddle.net/RYHWc/

答案 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");

小提琴:http://jsfiddle.net/Pee3n/

答案 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();