0

我现在对 Chrome 有一个特殊的问题......这就是我想要完成的事情:

我有一系列表格部分,它们已相应地用它们的 ID 标识,如下所示:

T = Tab  
G = Group within Tab  
S = Sub-Group within Group  
# = Numerical index  

for example:  
<tr id="T1"> = Tab 1  
<td id="T1G3"> = Tab 1 , Group 3  
<td id="T1G3S1"> = Tab 1, Group 3, Sub-Group 1  

到目前为止非常简单......在 JavaScript 的帮助下,我还打算在表单上启用或禁用这些组。现在,这是我遇到的问题......当我的表单第一次加载时,我想禁用表单上需要它的所有内容。为此,我创建了一个动态函数,它可以为我做到这一点,我将在其中指定哪些标签受到影响,以及在这些标签的 ID 中查找什么,如果发生匹配,则禁用它,如下所示:

Pseudo and Definition:
Function DisableAll(string TagNamesCSArray, string RegExpContent)
{
Split the tag names provided into an array
- loop through the array and get all tags using document.getElementsByTagName() within page
-- if tags are found
--- loop through collection of tags/elements found
---- if the ID of the element is present, and MATCHES the RegExp in any way
----- disable that item
---- end if
--- end loop
-- end if
- end loop
}

这很容易实现,这是最终结果:

function DisableAll(TagNames, RegExpStr) 
{
//declare local vars
var tagarr = TagNames.split(",");
var collection1;
var IdReg = new RegExp(RegExpStr);
var i;

//loop through getting all the tags
for (i = 0; i < tagarr.length; i++) 
{
    collection1 = document.getElementsByTagName(tagarr[i].toString())
    //loop through the collection of items found, if found
    if (collection1) 
    {
        for (y = 0; y < collection1.length; y++) 
        {
            if (collection1[y].getAttribute("id") != null) 
            {
                if (collection1[y].getAttribute("id").toString().search(IdReg) != -1) 
                {
                    collection1[y].disabled = true;
                }
            }
        }
    }
}
return;

}

然后我像这样打电话给它:

DisableAll("tr,td", "^T|^T[0-9]S");

看起来很简单是吗?“汉恩!” 错误答案蝙蝠侠......这在所有浏览器中都非常有效,除了Chrome......现在为什么会这样?我不明白。也许我的正则表达式有问题?

任何帮助将不胜感激。

干杯!

MaxOvrdrv

4

1 回答 1

0

就我而言,正则表达式匹配所有可能性。但该行collection1[y].disabled = true;无效,因为 disabled 不是 DOM 节点的属性。

顺便说一句:您的正则表达式的第二部分是不必要的,因为“^T”将匹配每个以 T 开头的 ID,后跟一个数字。

于 2012-04-16T18:35:36.387 回答