Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   createTextNode вставляется обычным текстом (https://javascript.ru/forum/events/53579-createtextnode-vstavlyaetsya-obychnym-tekstom.html)

sovsem-nub 09.02.2015 20:16

createTextNode вставляется обычным текстом
 
Здравствуйте! использую createTextNode для вставки текста в div, можно ли сделать так, чтобы при вставке он всё-таки учитывал его как html код ( как innerHTML ) и все теги <> не как простой текст



<!DOCTYPE html>
<html lang="en">
<head>
<title>createTextNode example</title>
<script>
function addTextNode(text) {
  var newtext = document.createTextNode(text),
      p1 = document.getElementById("p1");

  p1.appendChild(newtext);
}
</script>
</head>

<body>
  <button onclick="addTextNode('<h1>YES!</h1> ');">YES!</button>


  <hr />

  <p id="p1">Хочу чтобы было заголовком</p>
</body>
</html>

danik.js 09.02.2015 20:55

insertAdjacentHTML('beforeend', 'abc')

sovsem-nub 10.02.2015 09:08

не получилось....
конкретно есть такой кусок кода
/*
Render this widget into the DOM
*/
AddUpWidget.prototype.render = function(parent,nextSibling) {
 this.parentDomNode = parent;
 this.computeAttributes();
 this.execute();
var textNode = this.document.createTextNode(this.currentSum);
 parent.insertBefore(textNode,nextSibling);
 this.domNodes.push(textNode);
};


он вставляет currentSum обычным текстом, а нужно переделать так, чтобы вставлялся хтмл код. как это сдлать?

ksa 10.02.2015 09:28

Цитата:

Сообщение от sovsem-nub
нужно переделать так, чтобы вставлялся хтмл код. как это сдлать?

Например так...

<!DOCTYPE html>
<html ng-app>
<head>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
function addTextNode(text) {
	var o = document.createElement('div');
	o.innerHTML=text
	var p1 = document.getElementById("p1");
	o=o.childNodes;
	for (var i=0; i<o.length; i++) {
		p1.appendChild(o[i]);
	};
};
</script>
</head>
<body> 
	<button onclick="addTextNode('<h1>YES!</h1> ');">YES!</button>
	<hr />
	<div id="p1">
		<p>Хочу чтобы было заголовком</p>
	</div>
</body>
</html>

ksa 10.02.2015 09:58

Или вообще вот так. :D

<!DOCTYPE html>
<html ng-app>
<head>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
function addTextNode(text) {
	document.getElementById("p1").innerHTML+=text;
};
</script>
</head>
<body> 
	<button onclick="addTextNode('<h1>YES!</h1> ');">YES!</button>
	<hr />
	<div id="p1">
		<p>Хочу чтобы было заголовком</p>
	</div>
</body>
</html>

sovsem-nub 10.02.2015 11:01

это понятно, только тут createTextNode совсем не использовано.
а у меня уже есть эта текстовая ветка , она уже сосздана
var textNode = this.document.createTextNode(this.currentSum);


нужно эту ветку преобразовать в хтмл, перед тем как она вставится

parent.insertBefore(textNode,nextSibling); 
 this.domNodes.push(textNode);


возможно текст в html преобразовать?

ksa 10.02.2015 11:22

sovsem-nub, текстовая нода она и есть текстовая, как ее не преобразуй... ;)

Цитата:

Сообщение от sovsem-nub
возможно текст в html преобразовать?

Я тебе уже показал как можно преобразовать текст в хтмл.

sovsem-nub 10.02.2015 16:50

пошло поехало
 
туплю. реально innerhtml ... просто бедный js не знал куда его пихать.

так сработало

AddUpWidget.prototype.render = function(parent,nextSibling) {
 this.parentDomNode = parent;
 this.computeAttributes();
 this.execute();
var divNode = this.document.createElement("span");
 divNode.innerHTML = this.currentSum;
 parent.insertBefore(divNode,nextSibling);
 this.domNodes.push(divNode);


Часовой пояс GMT +3, время: 13:23.