Ошибка javascript уровня 4 вложенных кавычек - PullRequest
1 голос
/ 13 июля 2011

У меня есть следующий код ( Я отформатировал его для большего количества строк, но в моем исходном коде он в одной строке , потому что 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. Проблема в том, что когда я нажимаю на 2-е изображение, javascript ничего не предупреждает .

Но когда я изменяю это:

alert(\\\\\\\"text\\\\\\\");

на это:

alert(MyText); 

и добавьте переменную JavaScript MyText:

<script>
  MyText = "text";
</script>

, теперь она работает.

Мне кажется, проблема в этих вложенных кавычках:

\\\\\\\" 

(уровень 4).Есть идеи?Спасибо.

РЕДАКТИРОВАТЬ: пожалуйста, не размещайте здесь другие способы сделать это, я хотел бы знать, почему эти цитаты не работают здесь ..

ВТОРОЕ РЕДАКТИРОВАНИЕ: мне нужен этот php, потому что это только часть моего кода (в полном коде он мне нужен для отображения изображений в цикле ...)

Ответы [ 4 ]

2 голосов
/ 13 июля 2011

Если вы хотите использовать символ кавычки как данные (а не как разделитель атрибутов) в HTML, вы представляете его как &quot;, а не \"

1 голос
/ 13 июля 2011

В вашем сценарии нет ничего "динамического" - вы не вставляете переменные PHP, так зачем создавать все это из эха PHP? Просто иметь:

Или, если вы хотите сделать его еще чище:

<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()" />
0 голосов
/ 13 июля 2011

Используйте 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>
0 голосов
/ 13 июля 2011

рефакторинг вашего JS во внешний файл (с функцией, которая будет выполнять логику onclick) и попытаться вывести что-то более простое с помощью php echo

...