如何使用Javascript克隆Primefaces p:chart

如何使用Javascript克隆Primefaces p:chart,javascript,jquery,jsf,primefaces,Javascript,Jquery,Jsf,Primefaces,我正在尝试将PF5折线图从一个xhtml页面(数据页面)克隆到另一个xhtml页面(报告页面)。图表如下: <div id="lchart"> <p:chart id="ulinechart" type="line" rendered="#{chartDataBean.showLineChart}" model="#{chartDataBean.userdatLineModel}" responsive="true"/> </div> <butt

我正在尝试将PF5折线图从一个xhtml页面(数据页面)克隆到另一个xhtml页面(报告页面)。图表如下:

<div id="lchart">
<p:chart id="ulinechart" type="line" rendered="#{chartDataBean.showLineChart}"
model="#{chartDataBean.userdatLineModel}" responsive="true"/>  
</div>


<button id="reportaction" class="controlbutton" 
type="button onclick="copyChart()">Add Chart
</button>

function copyChart() {
var idincrement = 0;
var original = document.getElementById('topform:ulinechart');

var reportchartholder = document.getElementById('rchartholder');
var clone = original.cloneNode(true);
clone.id = 'ulinechart' + ++idincrement;
reportchartholder.parentNode.appendChild(clone);

}
我无法找到这个错误是什么以及如何处理它。它似乎与primefaces chart.js文件有关

研究表明,类型错误通常发生在手动添加的jQuery文件和PF jQuery文件之间存在冲突的地方

我再次检查了我是否正在使用捆绑的pfjquery。接下来,我检查了chart.js文件本身是否有问题,发现如下:

我尝试应用建议的修复程序并添加:

<h:outputScript name="charts/charts.js" library="primefaces" />
<h:outputStylesheet name="charts/charts.css" library="primefaces" />

到我的模板页面。错误完全相同

1) 有关于错误的指导吗?2) 关于绘制图表的正确方法有什么建议吗?我应该使用第一个JS方法吗?第二种jQuery图像方法?另一种方法?
提前感谢您的建议

这个问题解决了。我认为jQuery错误是由于未正确读取元素div造成的。由于jQuery中的冒号是为jQuery选择器保留的,因此我必须使用escape键为元素div定义完整的PF路径,如下所示:

function copyChart() {

var imageData = jQuery('#topform\\:ulinechart').jqplotToImageStr({});
var imageElem = jQuery('<img/>').attr('src', imageData);
jQuery('#rchartholder').append(imageElem); 
}
函数copyChart(){
var-imageData=jQuery('#topform\\:ulinechart')。jqplotToImageStr({});
var imagelem=jQuery('
我现在可以将图表克隆为图像。希望这有帮助

<h:outputScript name="charts/charts.js" library="primefaces" />
<h:outputStylesheet name="charts/charts.css" library="primefaces" />
function copyChart() {

var imageData = jQuery('#topform\\:ulinechart').jqplotToImageStr({});
var imageElem = jQuery('<img/>').attr('src', imageData);
jQuery('#rchartholder').append(imageElem); 
}