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と一致するため、正規表現の2番目の部分は不要です。

于 2012-04-16T18:35:36.387 に答える