星期五, 八月 24, 2007

关于Javascript的this关键词的解释.

往往在函数中使用this关键词
function checkme()
{
alert(this.value);
}

此时this代表 是当前聚焦的可视HTML元素(focus element).比如一个下拉框,输入框等等。

最严密的说法如下:

http://www.quirksmode.org/js/this.html

In JavaScript this always refers to the “owner” of the function we're executing, or rather, to the object that a function is a method of. When we define our faithful function doSomething() in a page, its owner is the page, or rather, the window object (or global object) of JavaScript. An onclick property, though, is owned by the HTML element it belongs to.

星期四, 八月 09, 2007

如何编写自己的dojo widget(物件)?

网络上有很多的方法。

包括什么使用以下方法来申明:

dojo.setModulePrefix('wang', '../wang');
dojo.registerModulePath('wang', '../wang');
dojo.widget.manager.registerWidgetPackage('wang.widget');
但会出现很多的问题和错误。

这篇文章的方法是最简单的
http://www.alexatnet.com/node/14

简单来说步骤如下:

1.建立一个目录

假设目前js目录结构如下:
/js/dojo-0.4.3-ajax
/js /wang //你自己定做的dojo widget 库
/js/wang/widget/ Memo.html, Memo.css

那么你需要建立的声明文件Menu.js保存在/js目录下.

2.建立新的widget声明文件Menu.js

Menu.js内容如下:

dojo.widget.defineWidget(
// widget name and class
"wang.widget.Memo",

// superclass
dojo.widget.HtmlWidget,

// properties and methods
{
// parameters
title: "Note",

// settings
isContainer: true,
templatePath: dojo.uri.dojoUri("../wang/widget/Memo.html"),
//注意:这个目录是相对于dojo.js所在目录的相对目录.
templateCssPath: dojo.uri.dojoUri("../wang/widget/Memo.css"),

// callbacks
onClick: function(evt){
this.destroy();
}
}
);

3.在HTML里应用声明

<script src="js/Memo.js"></script>

4.通过dojoType来使用新的widget
<div dojoType="Memo" title="你好世界">
你好吗?
</div>

效果如下:

星期三, 八月 08, 2007

Javascript的匿名函数和JSON。

http://www.json.org/
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

JSON建构于两种结构:

  • “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
  • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
JSON的表达语法:
object //用两个大花括号把对象数组包含起来。
{}
{ members }

members //成员
pair
pair , members
pair //标准的名字:值
string : value
array //数组用两个中括号包含起来的
[]
[ elements ]
elements
value
value , elements
value
string
number
object
array
true
false
null

简单的一个小技巧,如何把一个符合JSON数组表达的字符串转为Javascript数组对象
<script>
var arr
var str="[['line 1','line 2'],['line 1','line 2']]";
eval("arr="+str);
alert(arr[0][0]);
</script>