0

ここに問題があります。span要素のcssクラス名は、生成するたびに変化し続けます。簡単にするために、スパン要素があります

<tr>
   <td>
       <span class=1234>My Name is BouncingHippo</span>
   </td>
        ....other well-defined DOM elements with id etc...
 </tr>

HTMLのどこかにラジオボタンがあります。onchangeを実行すると、span要素のフォントの色が変更されます。

span要素には、id、name、および常に変更されるspanクラスがありません。私の現在のメソッドは、 for everyをgetElementsByTagName()使用して特定の行を返し、その方法でスタイル属性を挿入するブルートフォースです。innerHTML<tr>

これにはもっと良い方法がありますか?スパンクラスが世代ごとに変更される理由は、クライアントによって規定されたセキュリティ目的のためです。

編集1

まだ機能させていないブルートフォース方式のjsfiddleの大まかな概念..http: //jsfiddle.net/3jVnJ/1/

4

3 に答える 3

2

jsFiddleのアイデアに基づく1つのオプションは次のとおりです。

function findParentTag(obj, tag) {
    tag = tag.toUpperCase();
    while (obj && obj.tagName !== tag) {
        obj = obj.parentNode;
    }
    return(obj);
}

function changeColor(obj){
    var table = findParentTag(obj, "table");
    var spans = table.getElementsByTagName("span");
    for (var i = 0; i < spans.length; i++) {
        if (spans[i].className) {
            spans[i].style.color = "red";
            break;
        }
    }
}                
    ​

作業デモ: http: //jsfiddle.net/jfriend00/kZQJq/

于 2012-09-10T15:32:39.240 に答える
1

生成時にサーバーから、現在生成されているクラス名である変数を含むjsスクリプトタグを出力できます。次に、そのスパンがどのクラスであるかを知る必要がある変数を使用します。

于 2012-09-10T15:20:42.713 に答える
0

私の仮定は次のとおりです。属性Aを使用した要素の選択dom=for each(e in document.gEBTN('E'))if(eA)e

だからあなたにとってそれはsmthのようになりますfor each (e in document.gEBTN('span')) if (e.class=="1234") e.className=”changedFont”;

于 2012-09-10T15:32:22.163 に答える