2014-07-04 18 views
0

Может кто-нибудь скажет мне, где я ошибся с этим кодом? Ничего не происходит, когда я нажимаю ссылку. Во-первых у меня есть PHP био пользователя с ссылкой ниже, чтобы изменить его (имейте в виду, этот скрипт находится во внешнем файле, который включен в основной) ...Изменение содержимого HTML с помощью функции Javascript

<?php 

/* bio was retrieved earlier... */ 

echo '<div id="bio"> 
<p>'.$row["bio"].'<br> 
<a href="javascript:editBio(\''.$row["bio"].'\');">Edit</a></p> 
</div>'; 

?> 

Тогда у меня есть яваскрипта функцию в основной файл, который я хочу, чтобы заменить DIV с формой ...

function editBio(bio) { 

    document.getElementById("bio").innerHTML = ' 
    <form action="profile.editbio.php" method="post"> 
    <textarea cols="40" rows="10" name="bio" id="bio" maxlength="275">'+ bio +'</textarea><br> 
    <input type="submit" value="Update"></form> 
    '; 

} 

То, что я хочу, чтобы пользователю нажать на ссылку «редактировать» и иметь их био мгновенно превратится в текстовое поле, где они могут изменить его ,

При проверке консоли я получил эту ошибку:

Uncaught SyntaxError: Unexpected end of input 

Любой помощь ценится, и если вы можете обеспечить более короткими, менее сложный код (хотя я не думаю, что вы могли бы), что было бы здорово!

+0

Так ... это * нет * работа? – AstroCB

+0

@AstroCB - отредактировано, чтобы включить то, что происходит. – Locke

+0

Вы случайно не проверили консоль, когда пытались ее запустить? – jsickles

ответ

0

Я уверен, что это из-за разрыва строки в вашем HTML: если линия падает, это нарушение к следующей строке, а не переполнены.

Он должен выглядеть следующим образом:

document.getElementById("bio").innerHTML = '<form action="profile.editbio.php" method="post"><textarea cols="40" rows="10" name="bio" id="bio" maxlength="275">'+ bio +'</textarea><br><input type="submit" value="Update"></form>'; 

Скобки не несут через разрывы строк.

Кроме того, как уже упоминалось jsickles, эта линия будет выдавать ошибку:

<a href="javascript:editBio('.$row["bio"].');">Edit</a> 

Вам нужно бежать внутренние скобки:

<a href="javascript:editBio('.$row[\'bio\'].');">Edit</a> 

Demo

+0

Спасибо, ваш ответ в сочетании с @jsickles - это то, что решило мою проблему. – Locke

+0

@ Locke Я рад, что это помогло. – AstroCB

+0

Нет ничего плохого в повторении строки ''Edit''. '$ row' - это переменная php. – mclaassen

2

новые значения строки должны быть объединены, например:

function editBio(bio) { 

    document.getElementById("bio").innerHTML = '<form action="profile.editbio.php" method="post">' 
               +'<textarea cols="40" rows="10" name="bio" id="bio" maxlength="275">'+ bio +'</textarea><br>' 
               +'<input type="submit" value="Update"></form>'; 

} 
+0

Конкатенация не требуется: просто поместите все это на одна линия. – AstroCB

+0

, но в вашем примере кода ваш код, кажется, находится в новой строке. поэтому вы должны сделать конкатенацию. – michikot

+0

Это не имеет значения; он будет работать в любом случае, но конкатенация их - ненужная работа. – AstroCB

-2

Не был бы этот код ...

javascript:editBio('.$row["bio"].'); 

нужно мне в 'а' OnClick событие, а не HREF atrribute?

например.

<a href="javascript:editBio('.$row["bio"].');">Edit</a> 

должен быть

<a href="" onclick="editBio('.$row["bio"].');">Edit</a> 
+0

Они оба делают то же самое. – AstroCB

0

Самая большая проблема что вы не используете кавычки вокруг параметра вызова функции.

<a href="javascript:editBio(\''.$row["bio"].'\');">Edit</a> 
+0

Теперь ошибка styntax такова: 'SyntaxError: Неожиданный конец ввода' – Locke

+0

@Locke, пожалуйста, обновите свой вопрос с точными изменениями, которые вы сделали до сих пор, - а также то, что является значением в поле« bio ». – jsickles

+0

Сообщение отредактировано. .... – Locke

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