Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当通过ajax创建的html调用时,javascript替换方法不使用innerHTML_Javascript_Replace - Fatal编程技术网

当通过ajax创建的html调用时,javascript替换方法不使用innerHTML

当通过ajax创建的html调用时,javascript替换方法不使用innerHTML,javascript,replace,Javascript,Replace,我现在花了好几天的时间试图用javascript调试一个简单的替换,这让我发疯。非常感谢您的帮助 当我创建一个简单的html文件,在头中使用javascript函数,并在主体中调用函数时,我可以获取元素的内容,并使用replace方法替换innerHTML的某些字符,例如换行符。我也可以用jsfiddle来实现这一点 toedit=toedit.replace(/\n/g,); 但是,在我想要使用它的实际应用程序中,脚本位于页面的标题中,html通过一些ajax放置在页面的div中,它失败了。

我现在花了好几天的时间试图用javascript调试一个简单的替换,这让我发疯。非常感谢您的帮助

当我创建一个简单的html文件,在头中使用javascript函数,并在主体中调用函数时,我可以获取元素的内容,并使用replace方法替换innerHTML的某些字符,例如换行符。我也可以用jsfiddle来实现这一点

toedit=toedit.replace(/\n/g,
);
但是,在我想要使用它的实际应用程序中,脚本位于页面的标题中,html通过一些ajax放置在页面的div中,它失败了。有人能发现问题吗

在HTML页面或JSFIDLE中执行以下操作


函数editText(editThis)
{
警惕(编辑此);
//警报(“hi”);
var-toedit=document.getElementById(editThis.innerHTML);
//警惕(toedit);
toedit=toedit.replace(/\n/g,
); 警惕(toedit); } 一大堆 使用 换行符在这里
以下脚本不会在id旁边有*的行上运行。会在删除该行时运行。当行仅注释掉时,脚本中断

在页面的页眉中:


函数editText(editThis)
{
警惕(编辑此);
//警报(“hi”);
var-toedit=document.getElementById(editThis.innerHTML);
警惕(toedit);
toedit=toedit.replace(/\n/g,“
”);//****问题行 警惕(toedit); }
//下面的函数从页面调用,用包含上面链接的html填充div js

函数加载步骤(id)
{
var-xmlhttp;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“stepsDiv”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”、“getsteps.php?id=“+id,true”);
xmlhttp.send();
}//结束函数
从上面的js函数调用getsteps.php

echo'.$text'

如果设置的变量是innerHTML的副本,则需要直接更新innerHTML

  document.getElementById(editThis).innerHTML=toedit;//once you've done your replace
但是,为什么在执行操作之前要在onreadystatechange中设置innerHTML 替换(/\n/g,“
”)

一旦它出现在HTML中,它可能就不会保留换行符

.responseText.replace(/\n/g, '<br />')
.responseText.replace(/\n/g,

.responseText.replace(/\r\n/g,

您的问题在于以下几行:

var toedit = document.getElementById(editThis).innerHTML;
您正在抓取DOM对象的innerHTML,即id为“text”的文本区域。此对象的innerHTML尚未更新。您需要的是文本区域的,它将为您提供在文本区域中键入的实际文本。将上述行更改为以下内容:

var toedit = document.getElementById(editThis).value;

那应该能解决你的问题!快乐编码

您有
警报(要编辑)在您的第一个代码示例中应该是
警报(toedit)
。。。我想这不是问题的根源吧?(正如您所说,它在中运行良好。此外,根据,您应该使用.value而不是.innerHTML作为textarea。嗨,我修复了警报输入错误。我认为它可能是值,但innerHTML在测试中工作,而值在实际环境中不工作。您的整个页面是由PHP生成的还是仅由textarea位生成的?您是否检查了生成的内容,例如,在Chrome中使用Inspect元素?该元素在ff中看起来不错--我在这台机器上没有Chrome--但是我认为我缩小了问题的范围。如果我从替换中取出\n,它不会崩溃。因此,也许我需要对其进行检查或其他操作…是的,如果您的javascript源于PHP程序,那么您可能需要将\n作为\\nI逃逸在onclick函数中,OP试图操作id为“stepsDiv”的div中textarea内的文本,其innerHTML是在onreadystatechange中较早设置的。请参阅原始帖子的注释-这似乎不是问题所在。
var toedit = document.getElementById(editThis).value;