0

这就是问题所在,每当我们生成时,我们的 span 元素的 css 类名都会不断变化。所以为了简化,我们有一个 span 元素

<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,没有名称,并且有一个随时变化的 span 类。我当前的方法是蛮力使用for eachgetElementsByTagName()返回特定行并以这种方式插入样式属性。innerHTML<tr>

有没有更好的方法呢?跨代类更改每一代的原因是出于我们客户规定的安全目的。

编辑 1

关于蛮力方法的jsfiddle的一个粗略概念,我还没有让它工作.. http://jsfiddle.net/3jVnJ/1/

4

3 回答 3

2

这是基于您的 jsFiddle 中的想法的一个选项:

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 脚本标记,该变量是当前生成的类名。然后在需要知道 span 是什么类的地方使用变量。

于 2012-09-10T15:20:42.713 回答
0

我的假设是:具有属性 A dom=for each (e in document.gEBTN('E')) if (eA) e 的元素选择

所以对你来说就像smthfor each (e in document.gEBTN('span')) if (e.class=="1234") e.className=”changedFont”;

于 2012-09-10T15:32:22.163 回答