必威体育下载克里斯蒂安·海尔曼

您当前正在浏览的是必威体育下载克里斯蒂安·海尔曼三月的博客必威体育简介档案,2007。

三月份存档,二千零七

准备去新加坡

星期一,3月26日二千零七

我现在正在刻录30张CD(8/30正在验证)我的工作坊DOM脚本在新加坡两天后。

飞行时间为20小时,将持续13个小时。然后我有一天的时间来恢复,直到8个PowerPoint的代码示例和每个PowerPoint的练习将显示给课程的大约25个订阅者。真正可怕的是我不知道我住在哪家酒店,但研讨会的组织者答应去机场接我(那将是第一次,我以前从来没被接过!).

我将于星期日上午回到伦敦,并于星期三再次出发高地放荡将在爱丁堡呆到星期天,很可能和安迪·巴德合租一套公寓。

我通常只睡5-6个小时,大部分时间都是在笔记本电脑上写东西,我真的开始想知道为什么我要买这么好的公寓:)

确定嵌套HTML列表的深度

星期一,3月26日二千零七

前几天我遇到了这个问题,我需要知道一个菜单有多少嵌套级别。在一些失败的尝试之后DOM我意识到很多比较其实比我想象的要简单得多:

函数treedepth(o){
var嵌套= o.getElementsByTagName(' ul');
var allcount = 0;
(var = 0, j = nested.length;我<;我+ +){
var count = 1;
var kid =嵌套的[i].getElementsByTagName(' ul')[0];
而(孩子! = =定义){
数+ +;
kid=kid.getElementsByTagname('ul')[0];
}

if(count>allcount)allcount=count;
}

返回allcount;
}

你可以检查a这里是树深的测试用例

还有更好的方法吗?

可缩放地图解决方案–在纸上!

星期二,3月20日,二千零七

我对地图一窍不通。当我读到它们时我会晕车,当我看着它们并试图预测我将在哪里找到东西时,我没有任何线索,而我的解释通常听起来就像“带着水果在商店左转,然后一直走,直到你看到一个蓝色的跳跃,在那里右转,直到你经过一家博彩店……“这意味着我不记得街道名称了。

我甚至不擅长折叠和展开地图。你可以打赌,迟早我将无法再折叠一张巨大的地图,当我打开一张地图时,你会听到撕碎的声音。那一边,无论如何,在伦敦看地图是一件很痛苦的事情,因为你几乎没有足够的个人空间来展开地图。

我的一个朋友现在给我看了一个她不久前发明的东西,这是一张可折叠可缩放的地图。你只需选择你感兴趣的部分,你可以用两个手指展开到一个详细的地图,或只是保持概述在你的手中。加上有关地铁和伦敦不同景点的信息,这将是一个非常酷的礼物,给那些来拜访我和像我这样笨手笨脚的人。可惜你现在还买不到。

在YouTube上观看地图的视频:

商业用途

星期日,3月18日,二千零七

好吧,这是一个咆哮:

有人问我如何商业化使用我的脚本,得到一个答案却不再费心去回答?

我有出版了大约9年的使用和研究脚本每隔一段时间,我就会收到这样的评论或邮件:

“嘿,克里斯,我真的很喜欢你的剧本XYZ,这正是我所需要的,也是我一直在寻找的。非常感谢您提供此服务。你摇滚!您在站点和脚本中提到您希望得到关于商业使用的通知。我想用你的脚本,术语是什么?”

现在,我的立场如下:

疯狂地使用和学习我的东西,必威体育下载但是当你赚到钱的时候,我想看一份,至少作为一个尊重的标志,在第一时间免费提供这些东西。如果你创建一个网站或内部网,我通常会要求一次性付款,包括在伦敦咖啡馆的咖啡、三明治和巧克力。如果你卖一个像a这样的产品CMSⅠ通常情况下,每售出一本书就要求更高的份额或版税(后者从未发生过)。如果你的产品是免费的,我什么都不要(部落例如,使用我的一些代码)。我记得大约5年前,人们下载了免费的脚本,并真的花了5美元为它捐款,但这种情况已不再发生。

通常情况下,我会花大约5分钟的时间起草一封私人电子邮件给询问者解释这一点,然后看一看,10封电子邮件中有9封永远都得不到回复。有时甚至连问询者的电子邮件都是无效的!这是在浪费我宝贵的时间,我已经完全厌倦了。

那么人们期望什么呢?我可以停止免费发放任何东西吗?创建一个有假产品包的酷网站,并要求250美元购买一个20行的javascript?这似乎对很多人都有用,我真的觉得人们想要被利用。

所以无论如何,要求将我的东西用于商业用途,我写信给你,你也要回答我。即使是“XX美元”!弓形的你,至少告诉我发生了什么事!

不显眼的连接选择框-另一个解决方案的方法

星期六,3月17日,二千零七

更新2:这个第三个演示通过使用嵌套的UL和radiobutton允许预选择状态和无限制的级别享受。

更新:这个第二个演示现在允许预选状态并显示第一个下拉列表享受。

连接选择框的接口元素(一个选择框改变另一个选择框中的选项)是web应用程序设计中最常用也是最烦人的元素之一。虽然它对启用了javascript并使用鼠标的任何人都很好地工作,但使用键盘可能是一场噩梦(除非您知道可以先用alt+光标展开整个列表)。

另一个问题是,您使用它们使自己依赖于javascript,我甚至不想知道屏幕阅读器的实现是什么。

这就是说,它不会消失,人们喜欢它。令人害怕的是,有几十个javascript解决方案可以解决这个问题,几乎所有的解决方案都让你依赖于javascript。我过去试过用它来解决问题嵌套的HTML本文中的列表。最让我害怕的是坏解决方案的演示代码似乎已经结束在几个“脚本库”的网站,我收到电子邮件来感谢我的伟大的解决方案!

我个人最喜欢的是保持功能独立于鼠标和javascript,以及使用Ajax填充第二个下拉框正如我在书中解释的,但是对于许多web界面的所有者来说,这太复杂了。

所以今天,再次,对连接选择框的要求使它的丑陋的头和我尊敬的同事抬起了头。布拉德利赖特他自己解决了这个问题(相信我,和这个家伙一起工作确实很棒)。他的方法是创建一个包含所有信息的大型下拉列表,然后使用JavaScript将其分组。最初,他在不同的选项上尝试类名来连接它们,直到他让我看一眼,我喜欢这个想法,但提倡使用optgroups(不太知名的select child元素)。

所以,非javascript版本的标记如下:



我们现在需要把它变成连接的选择框是以下内容:

  • 创建新的select元素
  • 循环遍历所有optgroup,为每个optgroup创建一个新的选择框并隐藏它们
  • 循环访问每个optgroup的选项集合
  • 接受第一个选项并将其添加到新的主选择元素
  • 将其他选项移动到与此optgroup连接的选择框中
  • 应用onchange处理程序读取主选择元素的selectedIndex值,并显示具有相同编号的选择框,隐藏前一个
  • 将正确的辅助名称应用于当前显示的选择框
  • 删除原始选择框
  • 将原始文件的名称和ID应用于新的主选择框

另一个选项当然是将数据存储在对象中,并在第一个选择框更改时重新填充辅助选择框。然而,我想避免这种情况以加快速度。

查看此技术的示例告诉我你的想法。