getElementsByTagName(...)。0. parentNode'为null或不是对象 [英] getElementsByTagName(...).0.parentNode' is null or not an object

查看:168
本文介绍了getElementsByTagName(...)。0. parentNode'为null或不是对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为我的应用程序使用Google Chart,我必须将生成的图表转换为图像字节代码。我已经在Firefox和Chrome中完成了这个,但 IE8没有响应获取svg元素,所以现在我无法从给定的div元素中获取字节代码。我将将div元素转换为字节代码的脚本如下所示

I'm using Google Chart for my application and I have to convert the generated chart to image byte code. I've done this in Firefox and Chrome but IE8 is not responding to get the svg element, So now I can't to get the byte code from the given div element. My script to convert div element to byte code is given below

function getElement() {
    for (var i = 0; i < divelement.length; i++) {
        toImg(document.getElementById(divelement[i]), i, medicalconditionid[i]);
    }
}

function toImg(chartContainer, i, id) {
    var field = document.createElement("input");
    field.type = "hidden";
    field.id = "img_code" + i;
    field.name = "imgcode";
    document.getElementById("dynamicText").appendChild(field);
    document.getElementById('img_code' + i).value = id + "_" + getImgData(chartContainer);
    i++;
}

function getImgData(chartContainer) {

    var chartArea = chartContainer.getElementsByTagName('svg')[0].parentNode;
    var svg = chartArea.innerHTML;
    var doc = chartContainer.ownerDocument;
    var canvas = doc.createElement('canvas');
    canvas.setAttribute('width', chartArea.offsetWidth);
    canvas.setAttribute('height', chartArea.offsetHeight);
    canvas.setAttribute(
        'style',
        'position: absolute; ' +
        'top: ' + (-chartArea.offsetHeight * 2) + 'px;' +
        'left: ' + (-chartArea.offsetWidth * 2) + 'px;');
    doc.body.appendChild(canvas);
    canvg(canvas, svg);
    var imgData = canvas.toDataURL("image/png");
    canvas.parentNode.removeChild(canvas);
    return imgData;
}

我得到行:85
错误:'getElementsByTagName(...)。0. parentNode'在IE8中为空或不是对象
错误。

推荐答案

我在IE8中发现不支持svg或canvas元素,所以像谷歌图表,D3和jqplot这样的javascript图表库将图表转换为vml格式所以我们不能像上面的代码那样得到字节码。在我的应用程序中谷歌图表可以生成不推荐使用的图像格式图表,但我使用此图像图表并将图像URL发送到动作类并将网址转换为图像。请参阅Google图表图表的链接

I found in IE8 there is no support for svg or canvas element, so the javascript charting libraries like google charts, D3 and jqplot convert the charts to vml format so we cant to get the byte code as like above code. In my application google chart can produce image format charts that is deprecated but i used this image chart and send the image url to action class and convert the url to image. Refer this link for google image charts

这篇关于getElementsByTagName(...)。0. parentNode'为null或不是对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆