我是在一部书上抄的代码  可是运行时出现 21行msg没有声明
<html>
<head>
<script language="javascript">
function init()
{
var msg = "1.后台循环任务,少量UI更新:例如批量上传文件,并提供进度。这" +
"种情况使用BackgroundWorker组件是非常好的选择。<br />"+
"2.耗时的后台任务:这里的耗时任务是指一个时间较长的任务,并且不能精确获取进度,如:" +
"调用一个远程WebService接口。这种情况可以开两个线程,一个工作," +
"一个更新UI(不能提供进度,只能显示动画表示系统在运行中)。<br />" +
"3.耗时的 UI任务:当工作压力集中在UI响应上时,可以在工作者线程中增加延时,从而 " +
"让UI线程获得响应时间。整个工作的总体时间会增加,但用户响应效果会好很多。"
document.SearchStr.txt.value = msg;
}
function replace()
{
var key = document.SearchStr.box1.value;
var rplc = document.SearchStr.box2.value;
var n = 0;
while(n != (-1))
{
msgQ = msg.subString(n + rplc.length, msg.length);
msg = msg.substring(0, n) + rplc + msgQ;
n = n + rplc.length-1;
n = msg.indexOf(key, n);
}
document.SearchStr.txt.value = msg;
}
</script>
</head><body>
<script language ="javascript">
document.write("<hr />");
document.write("<h3>示例 3.7 文字列检索和置换</h3>");
document.write("<hr />");
document.write("<form name ='SearchStr'>");
document.write("<input type = 'text' name = 'box1' size = '20'><br />");
document.write("<input type = 'text' name = 'box2' size = '20'><br />");
document.write("<input type = 'button' value = '置换' onClick = 'replace()'><br />");
document.write("<textarea name = 'txt' rows = '5' cols = '40'></textarea>");
init();
document.write("</form>");
document.write("<br />");
</script>

</body></html>

解决方案 »

  1.   

    是不是msg后边少个;号呢,楼主试试
    建议用firebug进行调试
      

  2.   

    呵呵  解决啦
    原来是这样的
    在这一行msgQ = msg.substring(n + rplc.length, msg.length);的上面
    加上这条代码document.SearchStr.txt.value = msg;
    而且substring中的“S”要小写
      

  3.   

    <html>
    <head> 
    <script language="javascript">
    var msg;
    function init()
    {
    msg = "1.后台循环任务,少量UI更新:例如批量上传文件,并提供进度。这" +
    "种情况使用BackgroundWorker组件是非常好的选择。<br />"+
    "2.耗时的后台任务:这里的耗时任务是指一个时间较长的任务,并且不能精确获取进度,如:" +
    "调用一个远程WebService接口。这种情况可以开两个线程,一个工作," +
    "一个更新UI(不能提供进度,只能显示动画表示系统在运行中)。<br />" +
    "3.耗时的 UI任务:当工作压力集中在UI响应上时,可以在工作者线程中增加延时,从而 " +
    "让UI线程获得响应时间。整个工作的总体时间会增加,但用户响应效果会好很多。"
    document.SearchStr.txt.value = msg;
    }
    function replace()
    {
    var key = document.SearchStr.box1.value;
    var rplc = document.SearchStr.box2.value;
    var n =  msg.indexOf(key, n);
    while(n != (-1))
    {
    msgQ = msg.substring(n + rplc.length, msg.length);
    msg = msg.substring(0, n) + rplc + msgQ;
    n = n + rplc.length-1;
    n = msg.indexOf(key, n);
    }
    document.SearchStr.txt.value = msg;
    }
    </script>
    </head><body>
    <script language ="javascript">
    document.write("<hr />");
    document.write("<h3>示例 3.7 文字列检索和置换</h3>");
    document.write("<hr />");
    document.write("<form name ='SearchStr'>");
    document.write("<input type = 'text' name = 'box1' size = '20' value='后台'><br />");
    document.write("<input type = 'text' name = 'box2' size = '20' value='前台'><br />");
    document.write("<input type = 'button' value = '置换' onClick = 'replace()'><br />");
    document.write("<textarea name = 'txt' rows = '5' cols = '40'></textarea>");
    init();
    document.write("</form>");
    document.write("<br />");
    </script></body></html>
      

  4.   

    1、var msg ="...."放在function外面,作为全局变量
    2、JS的substring()全部是小写,你用的是subString(),不应该大写S