这个JavaScript函数是如何工作的

时间:2014-03-07 06:44:05

标签: javascript

我正在阅读有关W3School的一些教程。

我右键单击并查看页面源代码,并在源代码中找到了此函数:

function submitTryit() {
    var t = document.getElementById("textareaCode").value;
    t = t.replace(/=/gi, "w3equalsign");
    var pos = t.search(/script/i)
    while (pos > 0) {
        t = t.substring(0, pos) + "w3" + t.substr(pos,3)
             + "w3" + t.substr(pos+3,3) + "tag" + t.substr(pos+6);
        pos = t.search(/script/i);
    }

    document.getElementById("code").value = t;
    document.getElementById("tryitform").action = "tryit_view.asp?x=" + Math.random();
    validateForm();
    document.getElementById("tryitform").submit();
}

function validateForm() {
    var code = document.getElementById("code").value;
    if (code.length > 5000) {
        document.getElementById("code").value = "<h1>Error</h1>";
    }
}

这是做什么的?

var pos = t.search(/script/i)

这是做什么的?

t = t.substring(0, pos) + "w3" + t.substr(pos,3)
     + "w3" + t.substr(pos+3,3) + "tag" + t.substr(pos+6);

2 个答案:

答案 0 :(得分:1)

语法

/script/i

创建一个regular expression,以不区分大小写的方式匹配字符“script”(它将匹配"script""Script""SCRIPT"等。 )。这一行:

var pos=t.search(/script/i)

pos设置为字符“script”t中第一次出现的位置,无论大小写如何。 (如果pos不包含匹配的字符序列,它会将t设置为-1。)

你问过的另一行:

t=t.substring(0,pos) + "w3" + t.substr(pos,3) + "w3" + t.substr(pos+3,3) + "tag" + t.substr(pos+6);

替换使用字符“w3scrw3ipttag”找到的“脚本”序列(同时保留原始字符串中“script”的大小写)。

请不要问我他们为什么要这样做。另外,请不要尝试通过阅读网站源代码来学习JavaScript。 (至少在掌握了基础知识之前,即便如此......很多都非常糟糕。)相反,花点时间阅读一些非常好的tutorial information

答案 1 :(得分:0)

pos=t.search(/script/i)

似乎t是文本区域的值,也就是说,无论用户在所述文本区域中输入了什么内容。

t.search(/script/)

这使用正则表达式搜索用户输入的字符“script”。

t.search(/script/i)

i标志使其不区分大小写(因此它将匹配“Script”,“SCRIPT”等)。

var pos=t.search(/script/i);

这会将第一个匹配的位置指定给变量pos

alert("StackOverflow Rocks!".search(/rock/i));

会提醒“14”,因为这是第一场比赛的位置。

如果未找到匹配项,则search返回-1