使用javascript更改span元素的属性,其中类动态更改

时间:2012-09-10 15:08:31

标签: javascript html dom

继承问题,我们生成时,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类一直在变化。我当前的方法是强制getElementsByTagName()为每个innerHTML使用<tr>返回特定行,并以此方式插入样式属性。

有更好的方法吗? span class更改每一代的原因是出于我们客户规定的安全目的..

编辑1

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

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分:1)

您可以在生成时从服务器打印出一个带有变量的js脚本标记,该变量是当前生成的类名。然后使用变量,您需要知道该跨越的类。

答案 2 :(得分:0)

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

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