为什么style属性不适用于使用DOMParser创建的元素?

时间:2016-05-15 23:02:14

标签: javascript html xml dom

我正在尝试使用DOMParser来解析(X)HTML,然后在页面中显示它。它似乎在页面中嵌入了正确的元素,标记看起来完全正确,但尽管如此,它们表现得很奇怪(例如设置样式='显示:无'没有效果。)

这里发生了什么?

var parser = new DOMParser();
var markup = '<p id="testp">Can you see me?</p>';
var doc = parser.parseFromString(markup,"text/xml");
document.body.appendChild(doc.documentElement);
document.getElementById('testp').setAttribute('style', 'display: none');

https://jsfiddle.net/57064q1u/

1 个答案:

答案 0 :(得分:4)

你必须使用text / html来使用style属性。否则,您只会创建一个xml节点。

$(function() {
  var values = {
    'avgBottom': [
      [1, -2],
      [2, -2],
      [3, -2],
      [4, -2],
      [5, -2]
    ],
    'avgTop': [
      [1, 3],
      [2, 3],
      [3, 3],
      [4, 3],
      [5, 3]
    ],
    'values': [
      [1, .5],
      [2, -3],
      [3, .8],
      [4, 4.5],
      [5, 6.6]
    ]
  };

  var dataset = [{
    data: values['values'],
    lines: {
      show: true
    },
    color: "rgb(50,50,255)"
  }, {
    id: 'avgBottom',
    data: values['avgBottom'],
    lines: {
      show: true,
      lineWidth: 0,
      fill: false
    },
    color: "rgb(50,50,255)"
  }, {
    id: 'values',
    data: values['values'],
    lines: {
      show: true,
      lineWidth: 0.5,
      fill: 0.2,
      shadowSize: 0
    },
    color: "rgb(50,50,255)",
    fillBetween: 'avgBottom'
  }, {
    id: 'avgTop',
    data: values['avgTop'],
    lines: {
      show: true,
      lineWidth: 0,
      fill: 0.2
    },
    color: "rgb(50,50,255)",
    fillBetween: 'values'
  }];

  $.plot($("#placeholder"), dataset, {
    xaxis: {
      tickDecimals: 0
    },
    series: {
      lines: {
        show: true,
        fill: true
      },
      points: {
        show: false,
        radius: 4
      },
      color: "#62CB31",
      //      threshold: {
      //        below: -2,
      //        color: "rgb(255,0,0)"
      //      }
    },
    yaxis: {
      tickFormatter: function(v) {
        return v;
      }
    }
  });

  $.plot($("#placeholder"), [d1, d2, d3]);
});