嵌套引号4级javascript错误


Nested quotes level 4 javascript error

我有以下代码(我将其格式化为更多行,但在我的源代码中,我将其放在一行,因为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中将引号字符作为数据(而不是作为属性分隔符),则将其表示为&quot;而不是'"

您的脚本中没有任何"动态" -您没有插入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>