JavaScript根据XML值向div添加类

JavaScript根据XML值向div添加类,javascript,jquery,xml,Javascript,Jquery,Xml,希望我能正确地解释这一点。我在页面内的内容块上有一些XML(由自定义CMS调用)。我需要得到一个字段的值,这是一个数字价格($999.99),然后我需要将它显示为一个图像,而不是像那样直接显示价格 主要的问题是我不能嵌入任何字体,而且价格的样式需要精确,所以我只剩下一个0-9的图像精灵,然后创建空div,等待它们的额外类添加数字的背景图像 我不那么激动:) 那么,有没有可能将数字字符串(我知道我可以去掉$and)拆分,然后循环向一组div添加类(即div的全部ID为“price”)?我可以很快用

希望我能正确地解释这一点。我在页面内的内容块上有一些XML(由自定义CMS调用)。我需要得到一个字段的值,这是一个数字价格($999.99),然后我需要将它显示为一个图像,而不是像那样直接显示价格

主要的问题是我不能嵌入任何字体,而且价格的样式需要精确,所以我只剩下一个0-9的图像精灵,然后创建空div,等待它们的额外类添加数字的背景图像

我不那么激动:)

那么,有没有可能将数字字符串(我知道我可以去掉$and)拆分,然后循环向一组div添加类(即div的全部ID为“price”)?我可以很快用PHP解决这个问题,但由于限于JavaScript、HTML和CSS,我不得不跳出框框思考。也只能使用jQuery版本1.7.2

价格可能有3-5个数字,所以我想我应该有5个set div,如果价格中只有3个数字,那么添加一个“隐藏”类

想法/想法/建议



在考虑了一些注释之后,我认为默认情况下添加隐藏类可能更容易,然后删除它并为每个数字添加额外的类

在JavaScript中,字符串是一个数组,因此可以像下面这样迭代字符:

var priceString = "$999.99";
for( var index in priceString){
    var c = priceString[index];
    //process the character here
}
编辑 多亏了评论者……这里有一种更兼容跨浏览器的方式来迭代字符串中的字符:

var priceString = "$999.99";
for( var index = 0; index < priceString.length; index++ ) {
    var c = priceString.charAt(index);
    //process the character here
}
var priceString=“$999.99”;
对于(var index=0;index
我想这就是你想要的(根据你的评论):

$(“.price”)。每个(函数(){
var val=$(this.text())
$(this.empty();
对于(变量i=0;i
我只增加了1-3级的课程。。。这些课程只增加了色彩,但你可以看到我要去哪里

编辑:

关于你下面的评论。。。这样做

var val=“$231.2”;
变量$output=$(“”);
对于(变量i=0;i

或者在一个函数中:

多个元素不应具有相同的ID,您可以将它们的类改为“price”。您能否澄清,或者显示一些代码和您希望发生的事情的示例?var priceString=“$999.99”;对于每个数字值(我可以用字符串替换来删除$and),将该数字的类添加到div中。因此,如果是数字9,则需要添加一个名为“九”的div类。我可以在PHP中列出它,但我无法在这个项目中使用PHP(不幸的是:)我不擅长使用JavaScript,但您将字符设置为变量c?正确。然后,如果已经创建了DIV的区域,则可以使用jQuery引用它们并设置类。类似于
$(“#price”).get(digitIndex).addClass(“className”)
digitIndex与index不同,因为它是非数字字符。我很确定IE 7或8及以下版本不支持数组访问。为了保证向后兼容的安全性,您应该使用
priceString.charAt(index)谢天谢地,我只需要支持IE 8+,但我会验证:)意识到这并不能完全解决我的问题,因为数据来自变量,而不是div的内容。我只需要根据数字更改div。我正在尝试将$(“.price”)切换到一个变量,但我没有任何运气。已更新。。。不确定这是否正是您所寻找的,但您应该能够解决它。我能够根据您的更新使其正常工作。非常感谢!
$(".price").each( function() {
    var val = $(this).text() 
    $(this).empty();
    for( var i = 0; i < val.length; i++ ) {
        if(/^\d+$/.test(val[i])) {
            $numDiv = $("<div></div>").addClass("num"+val[i]);
            $(this).append($numDiv);
        }
        else {
            $(this).append($("<div>"+val[i]+"</div>").addClass("char"));
        }
    }
});
    var val = "$231.2";
    var $output = $("<div></div>");
    for( var i = 0; i < val.length; i++ ) {
        if(/^\d+$/.test(val[i])) {
            $numDiv = $("<div></div>").addClass("num"+val[i]);
            $output.append($numDiv);
        }
        else {
            $output.append($("<div>"+val[i]+"</div>").addClass("char"));
        }
    }
    $("#price").append($output);