2011-07-13 2 views
1

У меня есть следующий код (Я сформировал его для большего количества строк, но в моем исходном коде у меня есть он в одной строке, потому что innerHTML не любит новые строки как-то - но , что isn «т проблемы ...):Вложенные кавычки уровень 4 ошибка javascript

<?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). Есть идеи? Благодарю.

EDIT: Пожалуйста, не пишите здесь еще способы сделать это, я хотел бы знать, почему эти цитаты здесь не работает ..

ВТОРОЙ EDIT: Мне нужно, что PHP есть, потому что это всего лишь часть моего кода (в полном коде мне нужно отображать изображения в цикле ...)

+2

этот код заставляет меня хотеть * слэш * мои запястья ... (эх, geddit ... каламбур) – Spudley

+0

Это так ужасно. Пожалуйста, не делайте этого. :( – Reid

+0

Святые обратные косые черты, Бэтмен! –

ответ

2

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

+0

, но в предупреждении («что-то»), нет кавычек, представленных как данные, но как атрибут (по крайней мере, я думаю ..), или нет? – longaster

+0

Это символы котировки внутри HTML Значение атрибута ('onclick') – Quentin

+0

На самом деле, они являются символами кавычек внутри атрибута onclick, который встроен в другой атрибут onclick. – Quentin

0

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

-1

Используйте 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

Я знаю, что это можно сделать таким образом, но я хочу решить это: \\\\\\\ "... – longaster

+0

Вам не нужно использовать jQuery для самых упрощенных JS-заявлений ... @Marc B-решение намного чище. – kay

+1

Если вы хотите распространять встроенный javascript повсюду и хотите испортить непоследовательность браузера и тупость DOM --- конечно, просто игнорировать фреймворки – sod

1

Там нет ничего «динамический» в сценарии - вы не вставляете 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

Я написал это ко второму редактированию ... если бы я не хотел использовать php это будет хороший ответ ... – longaster

Смежные вопросы