gpt4 book ai didi

javascript - 显示缺少哪个 id

转载 作者:行者123 更新时间:2023-11-30 09:02:00 27 4
gpt4 key购买 nike

我在使相同的网络应用程序适用于不同版本的 Firefox 时遇到问题:

var col = [{'id': 'id1'}, {'id': 'id2'}, {'id': 'id3'},{'id': 'id4'},
{'id': 'id5'}, {'id': 'id6'}, {'id': 'id7'}, {'id': 'id8'}];
doSomething(col);

如果 id5 不存在,我的页面在 FF8 中显示正常,但在 FF 3.5 中则不然。

有没有办法在 id 不存在时报告或测试并显示其名称(因为即使在浏览器控制台中它也不会显示哪个 id 是)?

编辑

var col = [{'id': 'id1'}, {'id': 'id2'}, {'id': 'id3'},{'id': 'id4'},
{'id': 'id5'}, {'id': 'id6'}, {'id': 'id7'}, {'id': 'id8'}];
YAHOO.util.Dom.batch(col, desactivateBtn );

var desactivateBtn = function(btn){
YAHOO.widget.Button.getButton(btn.id)._setDisabled(true);
};

我正在使用 YUI 和 YAHOO.util.Dom.batch 只是为了将 desactivateBtn 应用于所有具有 col 中的 id 的按钮(它类似于 jQuery 的$.each 方法)

谢谢

最佳答案

您正在尝试访问未找到的元素的属性或方法。

改变:

 var desactivateBtn = function(btn){
YAHOO.widget.Button.getButton(btn.id)._setDisabled(true);
};

收件人:

 var desactivateBtn = function(btn){
var elem = YAHOO.widget.Button.getButton(btn.id);
if(elem) elem._setDisabled(true);
};

我遇到过类似的问题,IE 吞没了其他浏览器会认为是异常的内容。问题源于使用 eval (这是遗留代码,不是我写的)。我没看过YAHOO的图书馆,但我想知道getButton是不是方法使用 eval内部?

编辑:如果您想显示缺少的项目,则没有简单的方法可以跨浏览器执行此操作,因为 IE8 没有 console.log .您可以选择将输出写入调试 div 元素或使用消息发出警报。我可能会选择调试 div 元素。

var DEBUG = true;
window.DEBUG_OUTPUT = null;

if(DEBUG) {
window.DEBUG_OUTPUT = /* create div, append to whatever element */
}

然后,您可以将函数修改为:

var desactivateBtn = function(btn){
var elem = YAHOO.widget.Button.getButton(btn.id);
if(elem) { elem._setDisabled(true); }
else { window.DEBUG_OUTPUT.innerHTML = window.DEBUG_OUTPUT.innerHTML + ('' + btn.id);
};

有几点需要注意:

  1. 我不喜欢添加到 window对象,但对于控制台/调试,我认为没问题。
  2. 我有('' + btn.id)将非字符串 ID(如 12 等)强制转换为字符串。我不确定这是否是一个问题,但很久以前我在某些浏览器中遇到了一个设置 innerHTML = 3 的错误。会导致错误,因为 3 不是字符串。我没有时间测试这是否仍然是任何主要浏览器的问题。

edit2:更好的是,将 btn.id 包裹起来在 <p></p>标签。

关于javascript - 显示缺少哪个 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com