当前位置: 首页 > 图文教程 > 网页制作 > HTML/XHTML教程 > HTML组件(HTML COMPONENTS)之五

HTML/XHTML教程
一些不太常用的XHTML标签用法以及实例
网页中图片的设置涉及的三个问题
商业HTML邮件的制作建议
HTML Marquee 字符片段滚动
DOCTYPE 文档类型声明(网页爱好者必看)
纯HTML标签你熟悉多少?
HTML元素的ID和Name属性的区别
HTML meta的大作用
HTML标签tbody的用法与说明
HTML 特殊字符转换表
HTML基础 HTML的组成结构
HTML基础之HTML内容细则
Shtml 精简教程
浅谈html table 标签
html Frame、Iframe、Frameset 的区别
HTML 网页页面切换的各种变换效果
HTML的10个表格相关标记
让IE8启动IE7兼容模式的代码
HTML 结构化实现方法
xhtml的块级标记小结

HTML/XHTML教程 中的 HTML组件(HTML COMPONENTS)之五


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-04   浏览: 32 ::
收藏到网摘: n/a

    ANYDAY组件定义在day,htc中,该组件是日历单元的一个封装。组件的名字是由定义在第一行的XML命名空间决定的。

<HTML XMLNS:ANYDAY>

  正如canlenar.htc一样,你只有一个命名空间定义,原因是在该页不用调用其他的HTC,也就是说该HCT是叶子HTC,在这里我们定义的自定义标签是DAY,同样我们也定义它的行为,实际上,HTML组件的定义就是自定义标签行为的定义,该行为包括一个属性和一个事件:

<PUBLIC:COMPONENT tagName="DAY">
<PROPERTY NAME="value"></PROPERTY>
<ATTACH EVENT="oncontentready" ONEVENT="fnInit()"<>/ATTACH>
</PUBLIC:COMPONENT>


  注意事件 oncontentready ,当它的调用者calendar.htc要求导入day.htc并且被完全导入,该事件就会产生,事件的处理者是fnInit().我们来看看它:

function fnInit() {
document.body.innerHTML = element.value;
document.body.className = "clsDay";
defaults.viewLink = document;
element.appointments = "";
element.date = element.value;
}


  fnInit()演示了很多重要的HTC章节。第一行把 element.value 指定给调用页的 innerHTML 属性。HTML组件总是封装在element对象里。value属性一般定义在PROPERTY标签中,作为提醒,实际的值从调用页面传入,canlendar.htc:
text += '<TD><ANYDAY:DAY value=' + dayOfMonth + '></ANYDAY:DAY></TD>'
单元样式在第二行指定:

document.body.className = "clsDay";
样式类 clsDay 定义在该页的别处:

<STYLE>
.clsDay {
width:50;
height:50;
background-color:lightyellow;
align:center;
text-align:right;
}
</STYLE>


  注意在日历中日期的被填色为亮黄色,这证明HTC的格式的指定模式被它的调用者所支配,即:calendar.htc.
  fninit()的第三行设置default对象的viewlink属性,viewLink属性是HTML组件的基础,它可以使得一个HTC文档(day.htc)对另一个HTML组件(calendar.htc)来说可见.这儿就是viewLink的设置:

defaults.viewLink = document;

  注意您需要联接的是整个document对象。fnInit()的最后两行初始化我们将在以后解释的两个内部属性:

element.appointments = "";
element.date = element.value;


用于它本身的显示,DAY HTML组件和鼠标点击相关:

<BODY onclick="fnShowAppts()">

当该天被点击,用户被提醒在该天加上他或她的约会,或者修改已经存在的约会:

function fnShowAppts() {
newAppointments = prompt("Add your appointment:", element.appointments);
if (newAppointments != null) element.appointments = newAppointments;
document.body.innerHTML = '<FONT COLOR="red">' + element.date + '</FONT>' + "<BR>" + '<FONT SIZE="1">' + element.appointments + '</FONT>';
}


  这里的输入机制非常原始,用户在约会指定中加入新行标签(<BR>),否则他们将都显示在一行。最后innerHTML是日期数据(element.date)和约会指定(element.appointments) 的连接纽带。
  TODAY HTML组件(today.htc)和ANYDAY组件(day.htc)非常类似。唯一的不同是样式快中的background-color是pink而不是lightyellow,并且字体颜色是blue 而不是red.
  注意在日历中当前日期是粉红色(pink)背景蓝色的字。

  下节将列出我们所讲的日历的完整代码和一个不用HTC组件方法实现的日历代码