【发布时间】:2011-02-10 16:23:26
【问题描述】:
我正在尝试创建一个函数,该函数给出一个除数和一个类列表,然后将在其中进行一些文本替换。
了解了 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,我只想要一个可行的解决方案。
感谢大家的耐心等待。我个人认为我的描述非常清楚,如果不是,我深表歉意。我并没有试图变得晦涩难懂或难以获得帮助。但是请不要侮辱我,暗示我是想把它弄不清楚。
谢谢。
【问题讨论】:
-
我只需要我当前在循环内的节点的类名。但是我这里的代码什么也没返回..
-
你觉得
node.className.baseVal给你什么? -
您已经用 jQuery 标记了这个问题,但您似乎不了解 jQuery DOM 遍历。如果您不使用 jQuery,请重新标记您的问题。见api.jquery.com/category/traversing
-
我重新编辑了这个。为什么我因为试图寻求帮助而得到 -1?
-
@crosenblum:
node.className是一个字符串。字符串没有baseVal属性,所以node.className.baseVal会给你undefined。 -1(不是我的)可能是因为无法描述您的实际问题。
标签: javascript jquery element classname