Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从属性内部提取字符串_Javascript_Jquery_Html_Xml_Xhtml - Fatal编程技术网

Javascript 从属性内部提取字符串

Javascript 从属性内部提取字符串,javascript,jquery,html,xml,xhtml,Javascript,Jquery,Html,Xml,Xhtml,我需要写一个这样的函数: 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_

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

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_描述中获取描述值。有人能给我解释一下这个函数如何提取文本“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;
    }
函数getDescription(metaInfo)
{
var description=“”;
if(metaInfo!=null)
{
metaParts=metaInfo.split(“\n”);
if(metaParts!=null&&metaParts.length>0)
{
var i=0;
做
{
if(元部件[i].indexOf(“vti_描述”)>-1)
{
var descParts=metaParts[i]。拆分(“|”);
if(descParts!=null&&descParts.length>1)
{
描述=描述零件[1];
}
}
i++;

}而(i
getWidth
是一个函数。您不需要函数来实现这一点:

 var width=$(this).attr("ows_MetaInfo");
ows_ImageSize
是此xml行的属性。因此,上面的调用应该可以工作,它将返回在
ows_ImageSize
中设置的值,在本例中为620。因此,我将首先测试它,确保它返回一个数字:

console.info(width);
如果是这样的话,您将知道该部分是有效的,您可以处理让
getWidth(meta){}
工作的问题

 getWidth(width);

我认为你应该使用正则表达式

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;;
}
假设你的数据总是有这种形式

演示:


只要稍加调整,您就可以对任何属性使用此函数。

我看到620是
ows#u ImageSize
属性的值;难道您不能从那里得到它吗?还有,您不使用
data-
属性的原因吗?宽度和高度隐藏为vti#u lasthheight:IW | 250 ; ;vti#u lasthwidth:IW | 620对不起,我需要它获取高度而不是宽度。获取宽度很容易,但不是高度部分。我正在尝试对行的URL属性执行类似的操作,但它不起作用,你能帮我吗?我只想获取管道后的URL值,然后在“麦壳”之前“@SarikaThapaliya我在这里提出了一个有效的解决方案。而且我注意到我的答案有一个缺陷,所以我也修改了它。