3

我需要写一个这样的函数:

var width=getWidth( $(this).attr("ows_MetaInfo"));

其中 $this 指向 xml 行。

getWidth(meta){}函数中,我需要找到文本 vti_lastheight 并进行一些拆分和填充,然后获取 250 的数字高度值。我如何在 javascript 或 jquery 中执行此操作?

<z:row ows_Title='We are together!' ows_ImageSize='620' 
            ows_MetaInfo='16;#vti_parserversion:SR|14.0.0.6120&#13;&#10;                
            vti_lastheight:IW|250&#13;&#10;vti_lastwidth:IW|620&#13;&#10;
            vti_description:SW|Lorem ipsum dolor sit volutpat.' />

更新:我发现有人写了一个函数来从 vti_description 中获取描述值。有人可以向我解释这个函数如何能够提取文本“lorem ipsum”部分的描述部分,以及我如何利用它来提取 lastheight 值?拜托?

function getDescription(metaInfo)
    {
        var description="";
        if(metaInfo!=null)
        {
            metaParts=metaInfo.split("\n");
            if(metaParts!=null && metaParts.length>0)
            {
                var i=0;
                do
                {
                    if(metaParts[i].indexOf("vti_description")>-1)
                    {
                        var descParts=metaParts[i].split("|");
                        if(descParts!=null && descParts.length>1)
                        {
                            description=descParts[1];
                        }
                    }
                    i++;
                } while (i<metaParts.length && description=="" );
            }
        }
        return description;
    }
4

2 回答 2

1

我相信你应该使用正则表达式。

function getWidth(str) {
    str = str.replace(/(\r\n|\n|\r)/gm, "");
    str = str.match(/vti_lastwidth:(.*?(?=vti))/);
    str = parseInt(str[1].split('|')[1]);
    console.log(str);
    return str;;
}

假设您的数据将始终具有这种格式。

演示:http: //jsfiddle.net/pavloschris/3gdd5/

稍作调整,您就可以将此函数用于任何属性。

于 2013-03-20T16:52:49.873 回答
0

getWidth是一个函数。你不需要一个简单的函数:

 var width=$(this).attr("ows_MetaInfo");

ows_ImageSize是这个 xml 行的属性。所以上面的调用应该可以工作,它会返回ows_ImageSize在这种情况下设置的任何内容,即 620。所以我会首先通过确保它返回一个数字来测试它:

console.info(width);

如果是这样,那么您将知道该部分有效,并且您可以解决getWidth(meta){}开始工作的问题。

 getWidth(width);
于 2013-03-20T16:33:45.580 回答