最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Script标签与访问HTML页面详解_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:18:31
文档

Script标签与访问HTML页面详解_javascript技巧

Script标签与访问HTML页面详解_javascript技巧: 代码如下: var img2=document.getElementById(img2); alert(img2.onmouseover); //输出以下图片 IE输出: Firefox: 代码如下: var img1=document.getElementById(img1); img1.onmouseover=rot
推荐度:
导读Script标签与访问HTML页面详解_javascript技巧: 代码如下: var img2=document.getElementById(img2); alert(img2.onmouseover); //输出以下图片 IE输出: Firefox: 代码如下: var img1=document.getElementById(img1); img1.onmouseover=rot
 代码如下:

输出以下图片


IE输出:

Firefox:

代码如下:


var img1=document.getElementById("img1");
img1.onmouseover=rotate;
function rotate(){
this.src='1_yylklshmyt20090217.jpg';
}

var img1=document.getElementById("img1");
img1.onmouseover=onmouseover;
function onmouseover(event){
this.src='1_yylklshmyt20090217.jpg';
}

//实际上document.getElementById("img1");得到的就是一个对象相当于下面:
/* var img1={src:"https://www.gxlcms.com/1_ender1000.jpg",
id:"img1",
alt:"",
title:"反转图片"
}*/


代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>



无标题页

//循环img图片的所有属性,可以看到许多没有定义的属性
window.onload=repeat;
function repeat(){
var img1=document.getElementById('img1');
for(var i in img1){
alert(i+":"+img1[i]);
}
}







Script标签与访问HTML页面
Script标签
script标签用于在HTML页面中嵌入一些可执的脚本


//some script goes here
script标签有三个特殊的属性(当然,像id,class这样的属性它也是有的,HTML页面中几乎每个元素都可以有class,id属性)

//language属性指明标签里包含的脚本所使用的语言
//它有三个常见的取值JavaScript,JScript,VBScript
//some script goes here

//对于JScript只有IE能够识别,其它浏览器会忽略这个标签其里面的内容
//而对于VBScript,只有Windows上的IE能够识别,运行
//然而language属性后来在XHTML中被type属性替代了
//取值也变了,text/javascript,text/jscript,text/vbscript
//some script goes here
在Web浏览器中,我们只会使用JavaScript,type属性设置为text/javascript.事实上,由于JavaScript十分流行,它几乎成了脚本的代名词,而在Web浏览器中,即使script标签不加任何属性,浏览器也会把它当成JavaScript


alert("Hello!");

//上面的那段代码将会按JavaScript的方式运行
//即使有IE中,不加声明的script块也会当成JavaScript执行,而不是VBScript

msgbox "Hello!"

//上面的代码在IE中也会报错,IE也会将其当成JavaScript执行以前在HTML页面中,一些标签常会加一些诸如onclick,onmouseover这样的属性,这是一种事件绑定(关于事件,我们之后会详细讲解的,不要急).用于指定当HTML页面某个元素上发生了什么事的时候去执行的JavaScript代码(当然也可以是其它客户端脚本)

上面的代码将在HTML页面上显示一个图像,当你用鼠标点击一下时,会出现一个弹窗,显示'你把我点疼了!',onclick属性的值其实是一段JavaScript代码;这就是事件,下面是其它一些简单的事件

onclick ,当鼠标点击一下时执行一次
onmouseover ,当鼠标放上去时执行一次
onmouseout ,当鼠标移出去时执行一次
onmousedown ,当鼠标按下时执行一次
onmouseup ,当鼠标在上面松开(弹起)时执行一次
onmousedblclick ,当鼠标双击时执行一次
onload ,当对象加载完成时执行一次
以前网上十分流行的称之为RollverImages(翻转图像)的效果其实就是组合onmouseover,onmouseout这样的事件和简单的JavaScript代码实现的

onmouseover="this.src='../images/over.jpg'"
onmouseout="this.src='../images/out.jpg'" />你可能知道,onmouseover这类的属性中的字符串将会在事件发生时当成脚本来执行,但上面的那些代码看上去十分模糊

//为了便于查看,我们将它们提取出来放在下面
this.src='../images/over.jpg'
this.src='../images/out.jpg'分析上面的代码,我们发现,这其实是在给一个对象this的属性src赋值,但问题是我们并没有声明过一个叫this的对象!其实this对象是一个一直存在的一个对象,它不能被声明(this是关键字).这里,this就是指"这个",指这个标签!对于HTML中的元素,JavaScript会自动将其解析成一个对象.对于下面的img标签,会解析成下面一个对象:


//注意,实际上this是不能手动赋值,也不能手动声明的,这里仅仅是演示
this = {
src:"/Uploads//Uploads//Uploads//Uploads//Uploads//Uploads//Uploads//Uploads/../images/stack_heap.jpg",
alt:"内存堆栈",
onclick:"alert('Hello!')",
tagName:"IMG"
};
//其实不止这些属性上面,img标签会被解析成一个对象,具有src,alt等属性,src,alt属性是我们写在HTML里面的,而tagName则是系统自动生成的,它表示标签的标签名!我们可以用下面的代码进行测试:

自然,我们也可以修改它的值,于是翻转图象的效果就这样成功了

对于这样的行内事件绑定,有一些注意点.



function myFn() {
alert("图象加载完成了!");
}


//.............若干若干代码之后
//当图象加载成功时执行一个函数
上面的代码执行是没问题的,然而将顺序翻转一下(script可以放在任何合法的地方)

//当图象加载成功时执行一个函数
//.............若干若干代码之后

function myFn() {
alert("图象加载完成了!");
}
HTML页面按照从上往下的顺序加载执行,当图象加载成功后,就去执行onload里的内容(一个自定义函数),但由于script标签在下面若干代码之后,所以还没被加载,因此会出错"myFn is undefined";这就是为什么要将script标签放在head部分的原因,因为head在body前面,当body里的元素加载完成时,head中的script肯定加载完成了

但后来有了XHTML,有了"三层分离",W3C推出了DOM2,我们需要使用另一种方式绑定事件,获取HTML页面元素.再以上面的图像为例:



var img = document.getElementById("myImg");//我们通过ID来获取它
//document.getElementById方法有个参数,一个字符串ID
//然后,img就表示了那个图像标签对象
img.onclick = myFn;
/*我们不是把JavaScript代码以字符串符值给它的onclick属性
而是直接赋值给它一个函数名
你也会说,为什么不是img.onclick=myFn();
因为现在是在JavaScript代码区域中
加"()"表示执行这个函数,然后将这个函数的返回值赋给了img.onclick*/
function myFn() {
alert("图象加载完成了!");
}


//.......

//我们不再加onclick属性了,而是给它起了个ID
但上面的代码执行了仍会出错,因为HTML从上往下加载,当加载到script时,body部分在下面,还没有被加载,而JavaScript在浏览加载到时就会自动执行.这时,页面上的ID为myImg的img还没被加载到,所以会出错;document.getElementById方法需要一个字符串形式的ID,而如果页面上没有ID为这个的元素,它则会返回null(空对象);而在下面一行,img.onclick这一句使用了一个空对象,所以会在这里出错!至于解决方法,其实只是将传统的行内事件绑定的script位置反过来放.将script放在所以HTML元素后面!


//..................若干代码之后
输出二进制文件),还有就是javascript:

我们可以在浏览地址栏里输入"javascript:alert('JS!');",点转到后会发现,实际上是把javascript:后面的代码当JavaScript来执行,并将结果值返回给当前页面

类似,我们可以在a标签的href属性中使用javascript伪协议


//点击这面的链接,浏览器并不会跳转到任何页面,而是显示一个弹窗但javascript:伪协议有个问题,它会将执行结果返回给当然的页面

A解决方法很简单

A
//将undefined加到最后尽管javascript伪协议提供了一定的灵活性,但在页面中尽量不要使用!而对于调试JavaScript,javascript伪协议则显得十分有用!

文档

Script标签与访问HTML页面详解_javascript技巧

Script标签与访问HTML页面详解_javascript技巧: 代码如下: var img2=document.getElementById(img2); alert(img2.onmouseover); //输出以下图片 IE输出: Firefox: 代码如下: var img1=document.getElementById(img1); img1.onmouseover=rot
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top