php:在html中存储任意html元素数据的最佳方法是将这些数据传递到html页面上元素的内部html?

php:在html中存储任意html元素数据的最佳方法是将这些数据传递到html页面上元素的内部html?,php,javascript,html,Php,Javascript,Html,例如,我在php中有这样的字符串: $str='<img title="title of image" src="../somepic.gif" alt="some pic image" class="someclass" style="somestiles" onload="alert(this)" />'; //it can be anything: '<br>123<P><script>' or '123</script>' (e


例如,我在php中有这样的字符串:

$str='<img title="title of image" src="../somepic.gif" alt="some pic image" class="someclass" style="somestiles" onload="alert(this)" />';
//it can be anything: '<br>123<P><script>' or '123</script>' (even with newlines \r and \n and other special symbols)
$str='';
//它可以是任何东西:“
123

”或“123”(即使有换行符\r和\n以及其他特殊符号)

我需要它仅在单击后显示:

<?php 
echo'<div>
  <textarea onclick="this.parentNode.innerHTML=this.value">',htmlspecialchars($str),'</textarea>
</div>'; 
?>

如我们所见,js将texarea元素替换为$str变量中存储的内容,并将其作为文本放在“”值中

我需要知道如何在不使用textarea元素存储JS数据的情况下实现这一点。 (现在我使用隐藏文本区域,但我怀疑这种方法是否正确)

只需将HTML存储为(正确转义的)字符串:

var foo=document.getElementById(“foo”),
html=“”;
if(foo.addEventListener){
foo.addEventListener(“单击”,setInner,false);
}否则,如果(食品附件){
foo.attachEvent(“onclick”,setInner);
}
函数setInner(){
foo.innerHTML=html;
}​

演示:

使用jQuery,这几乎成为一项微不足道的任务。您需要等待一个更好的答案,只使用裸javascript tho
显示:block
切换,因为代码不是动态创建的。@Sirko:in$str可以是,例如,“


”标记或“var d='risch';警戒(d) '或其他内容。如果$str中有换行符(\r\n或\n或\r)怎么办?@EL2002将其删除。在处理HTML时,它们不是必需的,除非您正在进行某种类型的预格式化。例如$str=“1\r\n2\n3\r4\r\n5”,结果将是corrupted@EL2002当你把它放在你的HTML中时,它和
12345
没有什么不同,因此,您最好删除换行符。这对于存储的数据与源数据完全相同很重要。
var foo = document.getElementById("foo"),
    html = "<img src='http://placekitten.com/100/100' onclick='alert(1);' />";

if (foo.addEventListener) {
    foo.addEventListener("click", setInner, false);
} else if(foo.attachEvent) {
    foo.attachEvent("onclick", setInner);
}

function setInner () {
    foo.innerHTML = html;
}​