我想创建一个给定divid和一个类列表的函数,然后在它们内部替换一些文本。如何在元素循环内获取元素的className?
了解了Firefox Dom如何处理文本节点的方式不同,我读了我必须使用JavaScript来循环元素,兄弟才能到nextSibling。
我在脚本中遇到的最后一个障碍是你看到的一小部分,就是获取类名。我需要班级名称,以便我可以过滤掉取代文字的内容。
查看了所有答案后,在一位名叫Ryan的同事的帮助下,我们在jquery中重做了这个。
$(divid).find(".status_bar").each(function() {
var value = $.trim($(this).text());
// if value is not defined thru browser bugs do not replace
if (typeof(value) != 'undefined') {
// it is a text node. do magic.
for (var x = en_count; x > 0; x--) {
// get current english phrase
var from = en_lang[x];
// get current other language phrase
var to = other_lang[x];
if (value == from) {
console.log('Current Value ['+value+'] English ['+from+'] Translation ['+to+']');
value = to;
$(this).attr('value', to);
}
}
}
});
这目前适用于所有领域,除了替换文字。
我最初在jQuery中这样做的原因,不得不不确定我是否可以循环通过元素,并避免使用Firefox和文本节点的问题。
我正在做一个div内所有元素的循环,我现在需要获取我循环的元素的类名。
然后我可以检查当前元素的类是其中之一,我需要做的东西......
// var children = parent.childNodes, child;
var parentNode = divid;
// start loop thru child nodes
for(var node=parentNode.firstChild;node!=null;node=node.nextSibling){
var myclass = (node.className ? node.className.baseVal : node.getAttribute('class'));
}
但这种代码获取类名只得到的空值。
有什么建议吗?
对于那些想要弄清楚整个问题的人,请阅读这JavaScript NextSibling Firefox Bug Fix我有我的语言翻译的代码,可以在Google Chrome和IE中使用。但是当我在Firefox中使用它时,并且尝试在ajax加载后转换div内容时,由于空白问题而失败。
我真的没有jQuery或纯Javascript的偏好,我只想要一个工作解决方案。
谢谢大家的耐心。我个人认为我的描述非常清晰,如果不是,我很抱歉。我并没有试图模糊或难以获得帮助。但是请不要侮辱我,暗示我试图弄清楚。
谢谢。
我所需要的是我目前在循环内的节点的类名。但是我在这里的代码没有返回任何内容.. – crosenblum 2010-04-21 15:59:24
你认为'node.className.baseVal'给你了什么? – Tomalak 2010-04-21 16:24:00
这个班的名字? – crosenblum 2010-04-21 16:27:03