qLN北方站长站使用||运算符指定一个默认值 qLN北方站长站
事件处理程序依赖于浏览器。理想情况下,应用程序应该通过公共库隔绝对浏览器的依赖。当没有这样的库时,就会有些函数发生如下情况: Webjx.Com qLN北方站长站
function md(e) {qLN北方站长站 (window.event) ? ev = window.event : ev = e;qLN北方站长站 (ev.target) ? sr = ev.target : sr = ev.srcElement;qLN北方站长站 if (ev && sr && sr.id == "fp" || sr.id == "sb") st = 1;qLN北方站长站 if (sr.className.indexOf("pllist") < 0 && sr.className != "more" &&qLN北方站长站 sr.className != "plinkc" && sr.tagName != "scrollbar " &&qLN北方站长站 _toClose && _toCloseNorgie) {qLN北方站长站 d.getElementById(_toClose).innerHTML = "";qLN北方站长站 _toClose = "";qLN北方站长站 _toCloseNorgie.parentNode.className = '';qLN北方站长站 _toCloseNorgie = ''; qLN北方站长站 }qLN北方站长站 } |
qLN北方站长站一些浏览器把事件对象作为一个参数传给事件管理程序。微软选用把事件对象放入到一个全局的事件变量中。在Javascript中,全局变量是全局对象的成员。在浏览器中,全局对象始终包含一个window对象成员,其值是全局对象。当测试一个变量是否存在时,通过window访问全局变量是避免未定义变量错误的一种方法。无论如何,做这样的测试不应该是必要的。 qLN北方站长站
我们能通过问它是否是另外一种,来代替首先判断是否是微软事件。 qLN北方站长站
ev = e || event;我们用||(默认)运算符。如果e是真,我们将有它的值,但是如果e是假,则我们将用event。 qLN北方站长站
在下一个语句,我们又用||运算符去确定sr是哪个值。 qLN北方站长站
我们应该用var去声明ev和sr来避免全局冲突: qLN北方站长站
| function md(e) {qLN北方站长站 var ev = e || event,qLN北方站长站 sr = ev.target || ev.srcElement;qLN北方站长站 if (sr && (sr.id == 'fp' || sr.id == 'sb')) {qLN北方站长站 st = 1;qLN北方站长站 }qLN北方站长站 if (sr.className.indexOf('pllist') < 0 && sr.className != 'more' &&qLN北方站长站 sr.className != 'plinkc' && sr.tagName != 'scrollbar ' &&qLN北方站长站 _toClose && _toCloseNorgie) {qLN北方站长站 d.getElementById(_toClose).innerHTML = '';qLN北方站长站 _toClose = '';qLN北方站长站 _toCloseNorgie.parentNode.className = '';qLN北方站长站 _toCloseNorgie = '';qLN北方站长站 } qLN北方站长站 } qLN北方站长站 |
qLN北方站长站
全局变量是魔鬼 qLN北方站长站
下面我们看到另一个时间处理程序。正如你所料,它重复像前面一样破坏风格。 qLN北方站长站
| function kd(e) {qLN北方站长站 (window.event) ? ev = window.event : ev = e;qLN北方站长站 (ev.target) ? el = ev.target : el = ev.srcElement;qLN北方站长站 if (ev && el) {qLN北方站长站 code = ev.keyCode;qLN北方站长站 id = el.id;qLN北方站长站 } else {qLN北方站长站 return;qLN北方站长站 }qLN北方站长站 ctn = lt.id.substring(1);qLN北方站长站 if (code == 13) {qLN北方站长站 return;qLN北方站长站 } else if ((code == 191 || code == 222) && id != 'fp') {qLN北方站长站 _ffs = 1;qLN北方站长站 gk = 0;qLN北方站长站 } else if ((code < 31 || code > 41) &&qLN北方站长站 (code < 16 || code > 18) && code != 9 && code != 8 ) { qLN北方站长站 gk = 1;qLN北方站长站 } else {qLN北方站长站 gk = 0;qLN北方站长站 }qLN北方站长站 if (!_ffs && (id == 'fp' || id == 'st')) {qLN北方站长站 if (code == 9) {qLN北方站长站 if (box.value == '' || (box.value != '' && (at == 1 || ev.shiftKey))) {qLN北方站长站 mt(ctn);qLN北方站长站 } else if (id == 'st' && box.value != '' && at == 0) {qLN北方站长站 at = 1;qLN北方站长站 mt(ctn);qLN北方站长站 }qLN北方站长站 } else if (id == 'fp' && gk == 0 && (box.value == '' && st == 0) qLN北方站长站 && !ev.shiftKey && !ev.ctrlKey && !ev.altKey) {qLN北方站长站 d.getElementById('mk').focus();qLN北方站长站 d.getElementById('mk').blur();qLN北方站长站 } else if (gk == 1) {qLN北方站长站 at = 0;qLN北方站长站 }qLN北方站长站 } else if ((id == 'mk2' && box.value != '' && ev.shiftKey && code == 9) ||qLN北方站长站 (id == 'm6' && !ev.shiftKey && code == 9)){qLN北方站长站 d.getElementById('mk').focus();qLN北方站长站 } else if (!_ffs && gk == 1 && el.type != 'text' && !ev.ctrlKey && !ev.altKey){ qLN北方站长站 qLN北方站长站 qLN北方站长站 box.value = '';qLN北方站长站 box.focus();qLN北方站长站 }qLN北方站长站 }qLN北方站长站 function mt(ctn) {qLN北方站长站 if ((ev && !ev.ctrlKey && !ev.altKey) || !ev) {qLN北方站长站 if (ev.shiftKey){qLN北方站长站 nextTab = parseInt(ctn) - 1;qLN北方站长站 } else {qLN北方站长站 nextTab = parseInt(ctn) + 1;qLN北方站长站 }qLN北方站长站 if (nextTab == 0) {qLN北方站长站 d.getElementById('mk').focus();qLN北方站长站 } else if (nextTab < 8 ) {qLN北方站长站 t(d.getElementById('v' + nextTab));qLN北方站长站 } else { qLN北方站长站 return;qLN北方站长站 }qLN北方站长站 }qLN北方站长站 }qLN北方站长站 |
qLN北方站长站有意思的是它有一个同伴函数mt,它仅被kd调用。mt被传给一个参数ctn,但kd和mt之间的通讯大部分是通过全局变量。qLN北方站长站
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面