我正在阅读有关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);
答案 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