第九天学习@javascript

问题:

JS正则表达式

RegExp 对象用于规定在文本中检索的内容。

什么是 RegExp

RegExp 是正则表达式的缩写。

当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp 就是这种模式。

简单的模式可以是一个单独的字符。

更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等。

您可以规定字符串中的检索位置,以及要检索的字符类型,等等。

RegExp 对象的方法

RegExp 对象有 3 个方法:test()、exec() 以及 compile()。

test()

test() 方法检索字符串中的指定值。返回值是 true 或 false。

例子:

var patt1=new RegExp("e");
 
document.write(patt1.test("The best things in life are free")); 

由于该字符串中存在字母 "e",以上代码的输出将是:

true

例子 2:

您可以向 RegExp 对象添加第二个参数,以设定检索。例如,如果需要找到所有某个字符的所有存在,则可以使用 "g" 参数 ("global")。

如需关于如何修改搜索模式的完整信息,请访问我们的 RegExp 对象参考手册

在使用 "g" 参数时,exec() 的工作原理如下:

  • 找到第一个 "e",并存储其位置
  • 如果再次运行 exec(),则从存储的位置开始检索,并找到下一个 "e",并存储其位置
var patt1=new RegExp("e","g");
do
{
result=patt1.exec("The best things in life are free");
document.write(result);
}
while (result!=null) 

由于这个字符串中 6 个 "e" 字母,代码的输出将是:

eeeeeenull

:在谷歌浏览器是不支持这个的!Chrom浏览器只输出一个e。

即:

支持正则表达式的 String 对象的方法

FF: Firefox, IE: Internet Explorer

方法

描述

FF

IE

search

检索与正则表达式相匹配的值。

1

4

match

找到一个或多个正则表达式的匹配。

1

4

replace

替换与正则表达式匹配的子串。

1

4

split

把字符串分割为字符串数组。

1

4

compile()

compile() 方法用于改变 RegExp。

compile() 既可以改变检索模式,也可以添加或删除第二个参数。

例子:

var patt1=new RegExp("e");
 
document.write(patt1.test("The best things in life are free"));
 
patt1.compile("d");
 
document.write(patt1.test("The best things in life are free"));

由于字符串中存在 "e",而没有 "d",以上代码的输出是:

truefalse

问题:

Navigator 对象

JavaScript Navigator 对象包含了有关访问者浏览器的所有信息。接下来我们学习 Navigator 对象的两个属性。

appName

保存浏览器类型

appVersion

存有浏览器的版本信息(其他信息中的一项)

实例

<html>
 
<body>
<script type="text/javascript">
var browser=navigator.appName
var b_version=navigator.appVersion
var version=parseFloat(b_version)
 
document.write("Browser name: "+ browser)
document.write("<br />")
document.write("Browser version: "+ version)
</script>
</body>
 
</html>

上面例子中的 browser 变量存有浏览器的名称,比如,"Netscape" 或者 "Microsoft Internet Explorer"。

上面例子中的 appVersion 属性返回的字符串所包含的信息不止是版本号而已,但是现在我们只关注版本号。我们使用一个名为 parseFloat() 的函数会抽取字符串中类似十进制数的一段字符并将之返回,这样我们就可以从字符串中抽出版本号信息了。

重要事项:在 IE 5.0 及以后版本中,版本号是不正确的!在 IE 5.0 和 IE 6.0 中,微软为 appVersion 字符串赋的值是 4.0。怎么会出现这样的错误呢?无论如何,我们需要清楚的是,JavaScript 在 IE6、IE5 和 IE4 中的获得的版本号是相同的。

Chrome 16的结果:

Browser name: Netscape
Browser version: 5

Mozilla Firefox的结果:

Browser name: Netscape
Browser version: 5

IE8的结果:

Browser name: Microsoft Internet Explorer
Browser version: 4

问题:

The "RenderBody" method has not been called for layout page "~/Views/Shared/_Layout.cshtml".

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: The "RenderBody" method has not been called for layout page "~/Views/Shared/_Layout.cshtml".

这个问题气死人啊!!!

之前安装了一些补丁,我以为是,结果错杀了不少补丁。

又重新建立SVN的项目。

又删除了数据库的数据。

又备份打算重装系统。

结果,由于高人相助,发现是cookie的问题!

把cookie删除,发现不会再有这个问题!

原因分析:

由于使用MVC做出来的网站,一开始需要登录,登录后便把数据保存在cookie中,然而,由于一些原因,把数据库中的用户表数据全部删除,而cookie仍旧记得用户的UserId,用这个UserId来验证,结果导致每次登录均失败。唉……

问题:

IE9崩溃,便卸载了IE9,想安装IE8。卸载IE9,重启,竟然回到了IE8的图标,可是,竟然不能用,一点就崩溃!于是下载IE8,想重装,却发现Win7SP1不支持IE8。不想要IE8了,想装回IE9,下载了许多版本,想弄回IE9,安装了,结果提示“未能完成安装”,然后百度,谷歌,甚至到微软去找解决方案,下载补丁,但无一例外失败了!

终于放弃。

由于IE的市场占有率已经从当初的80%下降到百分之二十多,因此,IE也处算不得什么大佬了,倒是火狐和谷歌大行其道,所以,干脆干掉IE,从此走上非IE时代!

但是,由于某一些天之后,开启了360的漏洞修复,突然之间,IE8又复活了!

实现是折腾啊!

问题:

JS的加密和解密?

定义和用法

unescape() 函数可对通过 escape() 编码的字符串进行解码。

语法

unescape(string)

参数

描述

string

必需。要解码或反转义的字符串。

返回值

string 被解码后的一个副本。

说明

该函数的工作原理是这样的:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 \u00xx 和 \uxxxx 替换这样的字符序列进行解码。

提示和注释

注释:ECMAScript v3 已从标准中删除了 unescape() 函数,并反对使用它,因此应该用 decodeURI() 和 decodeURIComponent() 取而代之。

实例

在本例中,我们将使用 escape() 来编码字符串,然后使用 unescape() 对其解码:

<script type="text/javascript">
 
var test1="Visit W3School!"
 
test1=escape(test1)
document.write (test1 + "<br />")
 
test1=unescape(test1)
document.write(test1 + "<br />")
 
</script>

输出:

Visit%20W3School%21
Visit W3School!

问题:

JS未找到对象?

有可能是因为少写了一个花括号,因为在Vs的环境下编写JS,有时候一写快,错误提示就显得相当地不惹眼,导致没有注意到!

原文地址:https://www.cnblogs.com/xiaxiazl/p/2346153.html