我现在花了几天时间尝试在 javascript 中调试一个简单的替换,这让我发疯。将不胜感激任何帮助。
当我在标题中创建一个带有 javascript 函数的简单 html 文件并在正文中调用函数时,我可以获取元素的内容并使用替换方法替换 innerHTML 的某些字符,例如换行符。我也可以用 jsfiddle 做到这一点。
toedit = toedit.replace(/\n/g, '<br />');
但是,在我想使用它的实际应用程序中,脚本位于页面的标题中,而 html 通过一些 ajax 放置在页面上的 div 中,它失败了。谁能发现问题?
以下适用于 HTML 页面或 JSFiddle
<html>
<head>
<script type="text/javascript">
function editText(editThis)
{
alert(editThis);
//alert("hi");
var toedit = document.getElementById(editThis).innerHTML;
// alert(toedit);
toedit = toedit.replace(/\n/g, '<br />');
alert(toedit);
}
</script>
</head>
<body>
<textarea id="text" name="text" rows=9 cols=30 placeholder="Type Notes">A whole bunch
of text with
line breaks goes here</textarea><a href="#" onclick="editText('text');return false;">edit</a>
</body>
</html>
以下脚本不会在 id 旁边有 * 的行中运行。是否适用于删除该行。仅注释掉行时脚本中断。
在页眉中:
<script type="text/javascript">
function editText(editThis)
{
alert(editThis);
//alert("hi");
var toedit = document.getElementById(editThis).innerHTML;
alert(toedit);
toedit = toedit.replace(/\n/g, '<br />'); //****problem line
alert(toedit);
}
</script>
//从页面调用的以下函数,用包含指向上述js的链接的html填充div
function loadSteps(id)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("stepsDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getsteps.php?id="+id,true);
xmlhttp.send();
} //end function
从上面的js函数调用getsteps.php
echo '<textarea id="text" rows=9 cols=30 placeholder="Type text">'.$text.'</textarea><a href="#" onclick="editText(\'text\');return false">edit</a>