JavaScript基本对象

2019-06-03 09:36:17王冬梅


<p>Created By:Anonymous


当你对页面进行过排版的话,你的代码里可能会有字体、段落或其他的标记混杂在按钮和计算域的代码里。那些是格式化文档用的,在此处的讨论中可以略过不看。注意看“Anonymous”是表单上的另一个单词,它没有任何的标记在两旁来提示你它是从域产生的。在源代码中,Anonymous和“Created By”没有任何区别:两个在域前面的静态文本(如果你已经登录,你将看到你的名字而不是Anonymous)。 

为了比较一下,把CreatedBy域改回可编辑文本,保存表单,回到浏览器并刷新页面,再看页面的源文件,将会如下所示: 



<input type="button" onclick="alert(document.forms[0].CreatedBy.value);" value="Get editable field value">

<p>Created by:<input name="CreatedBy" value="Anonymous">


代替单词Anonymous(或是你的名字)的是域的HTML代码(或者严格地讲,是HTML的文本输入框)。它的名字是“CreatedBy”,值是“Anonymous”。这些是通过JavaScript能取得的属性,而普通的文本却没有这些属性。所以你不能用JavaScript来引用计算域,至少在浏览器中如此。还有一点令人迷惑的就是当文档在非编辑状态下时,即使是可编辑域,也不能用JavaScript来引用它。换句话说,当你保存了文档再次打开,但没有把它设置成编辑模式时,页面的HTML代码将和CreatedBy域是计算域时相同。另外一个关于JavaScript的有趣的现象是:在Domino以外,我们没有太多的机会去处理表单的编辑和非编辑状态,而对于我们Domino开发者来说,这可是个大问题。 

你注意到按钮和域都转换成输入对象了吗?那就是HTML的工作方式。使人迷惑的是两个对象都有value这个属性。对于按钮,value是“Get editable field value”,我想应该是按钮的标签,但是域的value值却是它的实际值。一些其他类型的对象同时有value属性和text属性。如果你像我一样,那么你有时就会搞不清楚什么是什么!就我的经验而谈,最简单的办法是读Web页面的HTML代码。 

多值
HTML的域没有Notes的域那样的多值属性。可以试一下:在表单上加入第二个按钮和第二个域。把域命名为“Letters”,类型为可编辑文本,选中“允许多值(Allow multiple values)”复选框。将默认值写成如下的字母列表: 



"A":"B":"C":"D":"E":"F":"G"


把按钮命名为“Get multiple values”并键入如下的JavaScript代码:



alert(document.forms[0].Letters.value);


你可以用不同的分隔符来改变此域的值,但是当你单击按钮时,你会注意到,不论你用什么分隔符,提示你的总是域的所有值。这和在Notes客户端中运行的@Formulas和LotusScript形成了对比。用@Prompt,你得到的提示只是域的第一个值:“A”。你用LotusScript同样也只能显示一个值,但是你要指定数组下标,否则将得到一个错误提示。公式和LotusScript都不能在提示语句中得到多值域的所有值。