如何从属性创建文件路径

时间:2018-06-25 20:37:29

标签: javascript css xml

我有一个要通过使用CSS转换的xml文件。

  

xml文件的一部分:

SELECT c.memberid
FROM customer c
INNER JOIN Orderplacement op ON c.memberid = op.memberid
WHERE ISNULL(c.active, '') = ''
  AND NOT EXISTS (SELECT op1.memberid Orderplacement op1
                  WHERE (ISNULL(op1.active, '') <> ''))

“ infoEntityIdent”属性的值是与xml文件位于同一目录中的图像文件名(不带文件类型扩展名)。 如果我未指定文件扩展名,如下所示:

<figure id="fig-0001">
<title>This is a figure</title>
<graphic infoEntityIdent="IMG-001-01"/></figure>

不显示图像。

  

当我这样输入时它会起作用:

 graphic
    {
        content: url(IMG-001-01);
    }

如何获取要显示的图像?我可以用javascript显示它吗?

我的限制是:

  • 我无法操纵xml文件本身(无法将文件扩展名手动添加到属性值的末尾)
  • 图像文件不是同一类型(* .jpeg,* png等的混合类型)

谢谢。

1 个答案:

答案 0 :(得分:0)

创建一个内存中的img元素,并依次加载这两个url变体(png和jpg),无论加载成功的哪个都可以使用。您可以为此使用类似于以下jquery代码的代码。

$(graphic).forEach((gr)=>{
         $("<img/>")
        .on('load', function() { console.log("image loaded correctly"); })
        .on('error', function() { 
                $(this).attr("src", $(gr).attr("infoEntityIdent")+".png");
        })
        .attr("src", $(gr).attr("infoEntityIdent")+".jpg")
    ;
    });

或者使用CSS,您可以在前后使用2个psedo元素,无论显示的是哪种负载。

graphic:after
    {
        content: url(IMG-001-01) ".png";
    }
graphic:before
    {
        content: url(IMG-001-01) ".jpg";
    }