头大了,JS居然连函数也找不到,大家帮帮忙

JavaScript07

头大了,JS居然连函数也找不到,大家帮帮忙,第1张

</head>

<script language="javascript">

function readbigclass()

{

var selectobj=document.form1.selectbig

selectobj.length=0

for(i=0i<classary.lengthi++)

{

if(classary[i][3]==0){ selectobj.options[selectobj.length]=new Option(classary[i][1],classary[i][0])}

}

}

//加载小类列表

function readsmallclass()

{

var selectobj=document.form1.selectsmall

var bigclassid=document.form1.selectbig.options[document.form1.selectbig.selectedIndex].value

selectobj.length=0

for(i=0i<classary.lengthi++)

{

if(classary[i][2]==bigclassid)

{

selectobj.options[selectobj.length]=new Option(classary[i][1],classary[i][0])

}

}

}

function setvalue(obj,cvalue)

{

if(cvalue=="" || cvalue==null){return}

var m,n

m=obj.length

for(n=0n<mn++)

{

if(obj.options[n].value==cvalue)

{

obj.selectedIndex=n

return

}

}

}

function changcls()

{

var smallcls='<%=rs("classid")%>'

var bigcls

for(i=0i<classary.lengthi++)

{

if(classary[i][0]==smallcls)

{

setvalue(document.form1.selectbig,classary[i][2])

setvalue(document.form1.selectsmall,smallcls)

return

}

}

}

function delpicture()

{

var ischeck=document.form1.delpic.value

var obj=document.all("piclink")

alert(ischeck)

return

if(ischeck==true)

{

obj.style.text-decoration.value="line-through"

}

else

{

document.form1.piclink.style.text-decoration.value="none"

}

}

function testobj(){alert('测试')}

</script>

页面上引用的js文件中函数不能执行的原因:找不到函数,会报错或undefined;语法错误;没有引用js文件等。

具体的解决方法:

1、函数应当直接写在页面即可调用;

2、确保有引用js文件,如果引用了的话,也是可以调用的。

引用方式,可以直接拖拽(因为路径准确),也可以自己写,引用脚本:<script src="Scripts/JScript.js" type="text/javascript"></script>

3、引用的js文件一定要在调用之前,否则就找不到函数了,会报错或undefined。

调用页面:

<script src="Scripts/JScript.js" type="text/javascript"></script>

    <script type="text/javascript">

        aa()

    </script>

Script.js中代码:

  

  function aa() {

        alert("js文件掉用")

    }

另外:在BS项目中,某个aspx页面需要引用外部:脚本文件,通过在页面head节<script language="" src="">方式引用指定的js之后,仍然无效。

通过alert方式调试,发现是由于js文件编码与js文件内容不符。由于js文件中包含中文注释,所以需要设置js文件为可识别中文的gb2312编码。其方法如下:

在.net中通过这种方式引用js文件

<script type="text/javascript" src="setday0.js"></script> 

然后在页面中调用setday0.js文件中的方法往往会出错!但是如果把setday0.js文件的内容直接放到该页面中来又一点问题也没有。就在页面中重写js代码。

这个问题是由于.net中的text编码所引起的,需要把setday0.js文件保存为UTF-8或者其他Unicode编码方式,问题就迎刃而解。原来的文本编码为gb2312,因为其中有汉字。

如何进行编码转换?

1、用记事本打开,保存的时候选择Unicode编码;

2、直接在vs中选择另存为,保存按钮右边有个小箭头,点一下,然后选择编码方式再保存就ok。

你这个代码看起来没问题,但是其中有些地方的符号是全角的,所以导致出错,建议重新写吧,在英文半角状态下编写代码

然后就是变量定义的位置有点问题。

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=UTF-8" />

<title>Throwing 1 die</title>

<script type="text/javascript" >

var cwidth = 400//保存画布的宽度

var cheight = 300//保存画布的高度

var dicex = 50//保存骰子的水平位置

var dicey = 50//保存骰子的垂直位置

var dicewidth = 100//保存骰子的宽度

var diceheight = 100//保存骰子的高度

var dotrad = 6//骰子的半径

var ctx

function init()

{

ctx = document.getElementById('c1').getContext('2d')

ctx.fillRect(50,50,100,100)

drawface(1)

}

function drawface(n)

{

ctx.lineWidth = 5//设置骰子的边框的厚度

ctx.clearRect(dicex,dicey,dicewidth,diceheight)//清除原来画的骰子

ctx.strokeRect(dicex,dicey,dicewidth,diceheight)//画骰子

ctx.fillStyle = "#009966"//设置园的颜色

switch(n)

{

//判断n是几

case 1: Draw1()

break

case 2: Draw2()

break

}

}

function Draw1()

{

var dotx//保存单个圆点的水平位置

var doty//保存单个圆点的垂直位置

ctx = document.getElementById('c1').getContext('2d')

dotx = dicex + dicewidth * 0.5

doty = dicey + diceheight * 0.5

ctx.beginPath()//开始路径

ctx.arc(dotx,doty,dotrad,0,Math.PI* 2,true)//画圆

ctx.closePath()//结束路径

ctx.fill()//填充圆

}

function Draw2()

{

var dotx

var dotyctx = document.getElementById('c1').getContext('2d')

dotx = dicex + dotrad * 3

doty = dicey + dotrad * 3

ctx.beginPath()

ctx.arc(dotx,doty,dotrad,0,Math.PI*2,true)

dotx = dicex + dicewidth - dotrad * 3

doty = dicey + diceheight - dotrad * 3

ctx.arc(dotx,doty,dotrad,0,Math.PI * 2,true)

ctx.closePath()

ctx.fill()

}

</script>

</head>

<body onload="init()">

<canvas id="c1" width="400" height="300">your browers </canvas>

</body>

</html>

这个是帮你修改后的代码。