入门篇:Javascript
作者:matrixkey 日期:2010-07-15
在上一篇日志里,提到许多专业技术名称。而其实,熟悉它们并不难,只要你有了一定的编程思想,学习新的技术非常容易入门。
今天介绍Javascript。
为了减少多余的工作量,这里不再赘述各种概念。
首先,Javascript是网络的脚本语言(脚本语言是一种轻量级的编程语言)。
它不同于Java,Java(由太阳微系统公司开发)很强大,同时也是更复杂的编程语言,就像同级别的 C 和 C++。
Javascript在HTML页面中的位置
位于 head 部分的脚本:
当脚本被调用时,或者当事件被触发时,脚本就会被执行。当你把脚本放置到 head 部分后,就可以确保在需要使用脚本之前,它已经被载入了。
- <html>
- <head>
- </head>
- <body>
- <script type="text/javascript">
- ....
- </script>
- </body>
- </html>
位于 body 部分的脚本:
在页面载入时脚本就会被执行。当你把脚本放置于 body 部分后,它就会生成页面的内容。
- <html>
- <head>
- </head>
- <body>
- <script type="text/javascript">
- ....
- </script>
- </body>
- </html>
知道了放置Javascript的位置之后,我们可以体验一下简单的Javascript!
- <html>
- <head>
- </head>
- <body>
- <script type="text/javascript">
- document.write("你好,我是Matrixkey!");
- </script>
- </body>
- </html>
根据 Javascript 标准,分号是可选的,浏览器把行末作为语句的结尾。
不过大多数人都认为在每行语句的结尾加上一个分号,是一个好的编程习惯。
Javascript 注释
和C#一样,单行的注释以 // 开始,多行注释以 /* 开头,以 */ 结尾。
- <html>
- <head>
- </head>
- <body>
- <script type="text/javascript">
- // 这行代码输出Matrixkey:
- document.write("Matrixkey");
- /* 第一行输出1798
- 第二行输出4772 */
- document.write("<p>This is a paragraph</p>");
- document.write("<p>This is another paragraph</p>");
- </script>
- </body>
- </html>
七色花 — 三级联动:C#独立实现(更新完毕)
作者:matrixkey 日期:2010-04-14
凌晨3点54分。
刚刚发过一遍,很傻X地消失了。
整个晚上,完成了工作指导报告和三级联动。昨天跟李老头没白聊啊,教授果然是有墨水的,经他一提点,居然真拿下了三级联动,纯C#版本哦。虽然无法实现无刷新,但依旧很爽。陈可哇,上学期我们的作品就差一个三级联动,不然就满分了。
先放图,睡觉,白天醒来补日志。武侠半夜醒来看视频版唐朝兴与亡,武媚娘……

****************************************俺醒了****************************************
省市区数据库文件日志结尾会放出。现在补日志。
3个DropDownList控件分别对应省市区……
******************************哈哈大笑庆祝IIS终于完整******************************
在写完“3个DropDownList控件分别对应省市区”这句后,准备贴上相关HTML代码。发现PJBlog的代码高亮一如既往地很2B,难看以及灵活性低得令人发指。于是发生了以下事件。
发现PJBlog系统原代码高亮太2太难看 ===》 想下个代码高亮又好看的插件
可能更新的PJBlog版本可以顺手点 ===》 去官网查看PJBlog版本有无更新
果然有更新,看了回复更新后出事故者不少 ===》 不敢随便把更新文件覆盖到服务器
想在本地先更新试试 ===》 自大2重装系统后IIS一直无法安装成功
利用IIS包重装IIS ===》 不成功
看到“必须在IIS详细信息里选中FromPage组建”的建议 ===》 尝试,不成功2
坚信是RP问题,卸载重装 ===》 尝试,不成功3
照着一帖子设置并不成功的IIS信息 ===》设置完成,测试,不成功4
看到“检查world wild web publishing 服务是否启动”的建议 ==》没启动,尝试启动,失败
搜索无法启动原因 ===》 找到罪魁祸首
卧了个槽,罪魁祸首是360。准确地说,是曾经用360自动更新补丁时安装的一个XP安全补丁:KB939373补丁。它会强制禁用world wild web publishing 服务。
删除它,测试IIS,成功。
还记得为什么要装IIS不?为了在本地尝试更新PJBlog,希望代码高亮可以完美些。
用FlashFXP下载服务器所有文件,遇到下载高峰,频繁断开连接。
……
……
等好了再说。生活就是这样充满了挑战啊[127]
****************************************随便写几句****************************************
又是一个忙到凌晨3点多的夜晚。
空闲时一天能谁18小时,兴致上来时两天都不睡。
这样的生活会很没有安全感吧,对我而言,有更多的存在感。
凌晨3点半,在本地测试完对PJBlog的版本更新和测试后,终于放心地在服务器端更新PJBlog版本至V3.2.8.352 。
梦想成真哦,最新的版本做了很多对BUG的修正,更要紧的则是人性化的完善,比如代码高亮,不仅简便了,而且漂亮了!
****************************************三级联动正文****************************************
3个DropDownList控件,分别用来绑定省,市,区。
主要特别注册的是,因为当选中“省”,要触发加载“市”的事件,选中“市”则触发加载“区”事件,所以“省”和“市”下拉控件的AutoPostBack属性必须设置为True。
- <td>
- <asp:DropDownList ID="Sheng" runat="server" AutoPostBack="True" OnSelectedIndexChanged="Sheng_SelectedIndexChanged">
- </asp:DropDownList>
- 省
- <asp:DropDownList ID="Shi" runat="server" AutoPostBack="True" OnSelectedIndexChanged="Shi_SelectedIndexChanged">
- </asp:DropDownList>
- 市
- <asp:DropDownList ID="Qu" runat="server">
- </asp:DropDownList>
- 区
- </td>
分别为加载省,加载市,和加载区编写绑定事件。
- /// <summary>
- /// 三级联动,绑定省
- /// </summary>
- public void mat()
- {
- myconn.Open();
- string sql_sheng = "select name from province";
- SqlCommand cmd = new SqlCommand(sql_sheng,myconn);
- SqlDataReader dr = cmd.ExecuteReader();
- while(dr.Read())
- {
- Sheng.Items.Add(dr["name"].ToString());
- }
- dr.Close();
- myconn.Close();
- }
- /// <summary>
- /// 省选定,加载市
- /// </summary>
- public void rix()
- {
- string sql_shi = "select city.code,city.name from city,province where province.code = city.provinceID and province.name = '"+Sheng.SelectedItem.Text+"'";
- SqlCommand cmd = new SqlCommand(sql_shi,myconn);
- SqlDataReader dr = cmd.ExecuteReader();
- while(dr.Read())
- {
- Shi.Items.Add(dr["name"].ToString());
- }
- dr.Close();
- }
- /// <summary>
- /// 市选定,加载区
- /// </summary>
- public void key()
- {
- string sql_qu = "select area.name from area,city where city.code = area.cityid and city.name = '" + Shi.SelectedItem.Text + "'";
- SqlCommand cmd = new SqlCommand(sql_qu, myconn);
- SqlDataReader dr = cmd.ExecuteReader();
- while (dr.Read())
- {
- Qu.Items.Add(dr["name"].ToString());
- }
- dr.Close();
- }
设计加载省,市,和区的时间先后顺序。注意,两行“//标记”的代码,是为了防止“省”被改变后,“市”控件上原先有的数据依旧存在。例如,已经选定 浙江省,杭州市,下沙区;当把浙江省修改成北京市,在“市”控件中,“杭州市”仍存在。加上这两行代码,这个问题得到解决。
- /*在页面加载时,从数据库载入省列表到“省”下拉控件*/
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- mat();
- }
- }
- /*在选定“省”之后,即“省”被改变后*/
- /*从数据库载入市列表到“市”下拉控件*/
- protected void Sheng_SelectedIndexChanged(object sender, EventArgs e)
- {
- Shi.Items.Clear(); //标记
- myconn.Open();
- rix();
- myconn.Close();
- }
- /*在选定“市”之后,即“市”被改变后*/
- /*从数据库载入区列表到“区”下拉控件*/
- protected void Shi_SelectedIndexChanged(object sender, EventArgs e)
- {
- Qu.Items.Clear(); //标记
- myconn.Open();
- key();
- myconn.Close();
- }
排版有点乱哈,将就着看了。附上数据库文件。
点击下载此文件
实验13(文件更新)
作者:matrixkey 日期:2009-06-12
回寝室折腾到10点
丁帅老师布置的实验13所要求的功能全部完成
至此,深刻体会了公共类和CONFIG文件的牛B之处
我靠要是晓得还能这样写程序我还至于傻傻一句一句琢磨么
再次膜拜,并且!
浅显地认识到了写代码之前流程和结构的规划的重要性
什么叫面向对象?
李三,李二,李曼祖孙三代
面向对象就是修改了李三的姓氏比如改成奥特
李二,李曼自动变成奥特二,奥特曼
可见公安局户籍管理工作全是面向过程操作啊
改了爷爷的姓氏,还得改老爸和儿子的姓氏
恩,今天这个比喻很有模范作用

不断地忙,忙到累忙到困,累了困了就睡觉。
不思考,不发呆,不给上帝发笑的机会。
也不给自己痛的机会。
PS,经蒋梁提醒,订单管理部分界面不符要求,重做上传
JAVA实现:螺旋输出矩阵
作者:matrixkey 日期:2009-04-03
那天写完日志后想了想,觉得实现某方法通用于任意数组螺旋输出可能并不成立。上午上课的时候蒋梁同学说题目应该是矩阵,不是数组。
这立马让题目简单了很多,事实上我那时还不确定,是否存在这样一个函数,能够让任意数组螺旋输出。但是矩阵的话,我非常的确定,肯定存在这样一个函数。
课堂上。
我们以一个4阶矩阵作为实例来模拟...
JAVA实现:螺旋输出二维数组
作者:matrixkey 日期:2009-03-30
答案C#版本
作者:matrixkey 日期:2008-12-11
设计题目:输入10个学生5门课的成绩,分别用函数求:(1)每个学生的平均分;(2)每门课的平均分;(3)找出最高的分数所对应的学生和课程。
要求:定义一函数input( ),用做输入10个学生的成绩;
定义一函数aver1( ),用做计算每个学生的平均分;
定义一函数aver2( ),用做计算每门课程的平均分;
定义一函数highest( ),找出最高分数及对应的学生和课程;
在main( )函数中调用以上函数。
用普通变量做参数和用数组做参数,特别是二维数组,题目的难度马上就增加了。调试了许久,答案终于出来了,好心的独行侠也把那100分给了我,虽然我是用C#做的。
鉴于我这里无法编译C和C++,他特地发了个Turbo C&C++ 过来,软件很小,界面很DOS。。好在是汉化的,用来也很不错,没有.NET那样的繁琐。先睡一觉,晚上改C。
下午的时候网站服务器出了问题,频繁无法连接,晚上正常了。
| static void Main(string[] args) { input(); } /*输入10个学生5门课程的成绩*/ static void input() { int[,] info = new int[10, 6]; for (int i = 0; i < info.GetLength(0); i++) { Console.Write("输入学号:"); info[i, 0] = int.Parse(Console.ReadLine()); for (int j = 1; j < info.GetLength(1); j++) { Console.Write("输入第{0}门课程的成绩:", j); info[i, j] = int.Parse(Console.ReadLine()); } } Console.WriteLine(); int h = highest(info); Console.WriteLine(); double a1 = aver1(info); Console.WriteLine(); double a2 = aver2(info); } /* 最高分*/ static int highest(int[,] info) { int mat = info[0, 1]; for (int i = 0; i < info.GetLength(0); i++) { for (int j = 1; j < info.GetLength(1); j++) { if (info[i, j] > mat) mat = info[i, j]; } } Console.WriteLine("最高分是:{0}", mat); return mat; } /*每个学生的平均分*/ static double aver1(int[,] info) { double sum = 0; double aver1 = 0; for (int i = 0; i < info.GetLength(0); i++) { for (int j = 1; j < info.GetLength(1); j++) { sum = (sum + info[i, j]); aver1 = sum / (info.GetLength(1) - 1); } Console.WriteLine("学号为{0}的学生,课程平均分为:{1}", info[i, 0], aver1); sum = 0; aver1 = 0; } return aver1; } /*每门课程的平均分*/ static double aver2(int[,] info) { double sum = 0; double aver2 = 0; for (int i = 1; i < info.GetLength(1); i++) { for (int j = 0; j < info.GetLength(0); j++) { sum = info[j, i] + sum; aver2 = sum / info.GetLength(0); } Console.WriteLine("第{0}门课程的平均分为:{1}", i, aver2); sum = 0; aver2 = 0; } return aver2; } |
一直用FCKeditor 编辑而不是UBB,让我最头疼的是没有代码高亮,晚上尝试一下,动手添加代码高亮功能,如果还能代码折叠,行数显示那就更好了。
趣题:如何把输出赋值给变量
作者:matrixkey 日期:2008-12-10
最近迷上百度知道的回答,不得不说,“百度知道”是一个非常成功的板块,就像更加人性化的BBS式的搜索引擎。今天看到一位高达7级的萬裏獨行俠,提了一个比较低端的问题,并且悬赏100分,好事啊,趁着夜深人静赶紧解决了拿分。
但是最后我懂了个道理,简单和复杂就在一线之间啊。。。。
他的题目是:
设计题目:输入10个学生5门课的成绩,分别用函数求:(1)每个学生的平均分;(2)每门课的平均分;(3)找出最高的分数所对应的学生和课程。
要求:定义一函数input( ),用做输入10个学生的成绩;
定义一函数aver1( ),用做计算每个学生的平均分;
定义一函数aver2( ),用做计算每门课程的平均分;
定义一函数highest( ),找出最高分数及对应的学生和课程;
在main( )函数中调用以上函数。
刚看题目,眼睛一瞟,喜滋滋地想这100分不拿不爽啊。立马在.NET上模拟着写。但是马上出问题了!
| static void Main(string[] args) { input(); } /*函数input:输入3个学生成绩*/ static void input() { Console.Write("输入3个数据:"); int a = int.Parse(Console.ReadLine()); int b = int.Parse(Console.ReadLine()); int c = int.Parse(Console.ReadLine()); Console.WriteLine("{0},{1},{2}",a,b,c); } |
上面代码片段的运行结果显而易见,在main函数中调用input函数,假设我们输入的是1,3,9,则输出1,3,9。接下来,问题就出现了。当我们自定义了求平均的aver1函数,就会发现在main函数中调用aver1函数时,不知该参数该从哪里获得。意思就是在main函数里的input();之后,如果我们调用aver1()函数,则必须根据定义aver1()函数时的参数表,给出相应的参数。请看:
|
static void Main(string[] args) |
我们知道调用aver1()时应该放入的参数,是调用input()时输出的参数a,b,c,但是由于a,b,c都是input函数体中的局部变量,无法在main函数中使用。所以就想到:如何把输出赋值给变量?
只要把输出的a,b,c赋值给main函数中的变量,那么aver1函数圆括号里需要的参数就有了。
问题是有了,答案还没有找到 =。= 在CSDN论坛上发帖求助,明天应该会有人解决,睡吧~
洗把脸一看论坛,发现问题解决了。
| static void Main(string[] args) { int a, b, c; input(out a, out b, out c); aver1(a, b, c); } static void input(out int a, out int b, out int c) { Console.Write("输入3个数据:"); a = int.Parse(Console.ReadLine()); b = int.Parse(Console.ReadLine()); c = int.Parse(Console.ReadLine()); Console.WriteLine("{0},{1},{2}",a,b,c); } void aver1(int x,int y,int z) { double m; int a = x; int b = y; int c = z; m = (a + b + c)/3; Console.WriteLine(m); } |
学习了!另外还多了一种思路:并不是”一件事件“都得拆成“几个函数”来实现
这句话在编写程序过程中最佳体现就是这样:
| static void input() { Console.Write("输入3个数据:"); int a = int.Parse(Console.ReadLine()); int b = int.Parse(Console.ReadLine()); int c = int.Parse(Console.ReadLine()); Console.WriteLine("{0},{1},{2}",a,b,c); aver1(a, b, c); } |
为了参数的简单化,将aver1函数在input函数中调用,所得结果与前面的一样。好思路!
程序代码






