Не работает onclick на блочных элементах

189
26 ноября 2016, 17:59

И так, не работает onСlick. Выскакивает вот такое сообщение:

Uncaught SyntaxError: Unexpected token }

Вот php код:

<?php
    echo "<article onclick = 'document.getElementById('myform').submit()'>
        <h3>
            {$row['name']}
        </h3>
        <p class='creator'>Создатель: {$row['creator']}</p>
    </article>"

В чем ошибка?

Answer 1

Необходимо заменить кавычки внутри атрибута onclick на двойные:

<article onclick = 'document.getElementById("myform").submit()'>

Или наоборот:

<article onclick = "document.getElementById('myform').submit()">
Answer 2

Спасибо @terron за наводку, все стало понятнее.

В таком случае вам необходимо не только поменять кавычки, как предложил @Маким (хотя проблема замечена верно), но и экранировать их таким образом.

<?php
    echo "<article onclick = 'document.getElementById(\"myform\").submit()'>
        <h3>
            {$row['name']}
        </h3>
        <p class='creator'>Создатель: {$row['creator']}</p>
    </article>"

Но лучше так никогда не делать. Стоит разделять HTML и PHP. Как-то так

?>
<article onclick = 'document.getElementById("myform").submit()'>
    <h3>
        <?php echo $row['name'];?>
    </h3>
    <p class='creator'>Создатель: <?php echo $row['creator']?></p>
</article>
<?php
READ ALSO
Не работает правильно onbeforeunload

Не работает правильно onbeforeunload

Eсть простая проверка - при запуске страницы она работает, при закрытии - нетПомогите, пожалуйста

371
Область видимости. AJAX [дубликат]

Область видимости. AJAX [дубликат]

На данный вопрос уже ответили:

319
Массивоподобные объекты JS

Массивоподобные объекты JS

Как создаются объекты подобные NodeList и HTMLCollection ? И есть ли у них преимущество перед массивами?

361
Как заменить обратные слеши на двойные обратные

Как заменить обратные слеши на двойные обратные

Есть у меня переменная, в нее попадает вот такая запись

393