使用Javascript函数更改HTML内容

时间:2014-07-04 01:51:43

标签: javascript php html

有人可以告诉我这个代码出错的地方吗?点击链接时什么也没发生。首先我给PHP一个用户的bio,下面有一个链接来编辑它(请记住这个脚本是在一个包含在main中的外部文件中)...

<?php

/* bio was retrieved earlier... */

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

?>

然后我在主文件中有一个javascript函数,我想用一个表单替换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>
    ';

}

我想要的是让用户点击“编辑”链接,让他们的生物立即变成一个textarea,在那里他们可以编辑它。

检查控制台时出现此错误:

Uncaught SyntaxError: Unexpected end of input

任何帮助都表示赞赏,如果你能提供更短,更简单的代码(虽然我认为你不可能),那就太棒了!

4 个答案:

答案 0 :(得分: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>';

}

答案 1 :(得分: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

答案 2 :(得分:0)

最大的问题是你没有在函数调用参数周围使用引号。

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

答案 3 :(得分:-2)

不会这个代码...

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

需要我在&#39; a&#39; onclick事件而不是href atrribute?

例如

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

应该是

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