我有以下代码(我将其格式化为更多行,但在我的源代码中,我将其放在一行,因为innerHTML不喜欢新行-但这不是问题…):
<?php
echo "
<img
src='1.png'
onclick='
document.getElementById('"my_div'").innerHTML='"
<img src='''"1.png'''" onclick='''"alert('''''''"text'''''''");'''" />
'";
'
/>
";
?>
在正文的某个地方,我有:
<div id="my_div"></div>
当我点击图片时,my_div里面会有相同的图片。问题是,当我点击第二张图片时,javascript不会发出任何警告。
但是当我改变这个:
alert('''''''"text'''''''");
:
alert(MyText);
并添加JavaScript变量MyText:
<script>
MyText = "text";
</script>
现在可以工作了
我认为问题出在那些嵌套引号上:
'''''''"
(第4级)。有什么想法吗?谢谢。
编辑:请不要在这里张贴另一种方法来做到这一点,我想知道为什么这些引号在这里不起作用。
第二次编辑:我需要php在那里,因为这只是我的一段代码(在完整的代码中,我需要它来循环显示图像…)
如果您希望在HTML中将引号字符作为数据(而不是作为属性分隔符),则将其表示为"
而不是'"
您的脚本中没有任何"动态" -您没有插入PHP变量,那么为什么要在PHP echo中构建这些变量呢?只是有:
或者如果你想让它更干净:
<script type="text/javascript">
function addImg() {
document.getElementById('my_div').innerHTML='<img src="1.png" onclick="alert(''text'')" />';
}
</script>
<img src="1.png" onclick="addImg()" />
将JS重构为一个外部文件(带有一个执行onclick逻辑的函数),并尝试用php的echo
使用jQuery!
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<div id="my_div"></div>
<img src="1.png" class="my_img" />
<img src="2.png" class="my_img" />
<img src="3.png" class="my_img" />
<script type="text/javascript">
jQuery(function() {
$('.my_img').click(function() {
$('#my_div').html($(this).clone().unbind());
alert('text');
});
});
</script>