在以下对jsPDF的调用中使用$('.mySelector').html()
而不是document.body
时,出现此错误:
element.getElementsByTagName不是函数
如何在jsPDF中使用jQuery选择器?
<div class="mySelector">
<p>HTML content...</p>
</div>
<button onclick="pdfDowload();">PDF</button>
function pdfDowload() {
var pdf = new jsPDF('p', 'pt', 'a4');
pdf.addHTML(document.body, function() {
pdf.save('report.pdf');
});
}
答案 0 :(得分:1)
错误是因为根据documentation,jsPDF期望提供给该函数的参数是Element对象,而不是字符串。
要解决此问题,您可以使用get()
从jQuery对象检索基础元素:
function pdfDowload() {
var pdf = new jsPDF('p', 'pt', 'a4');
pdf.addHTML($('.mySelector').get(0), function() {
pdf.save('report.pdf');
});
}
还要注意,文档指出此addHTML()
方法已被弃用。您应该遵循他们的指南以更新您的方法。
答案 1 :(得分:1)
下载后添加$('.mySelector').get(0)
此代码,我的页面空白。但是我已经解决了这个问题,而不是在下面的代码中使用pdf.addHTML
来pdf.fromHTML
function pdfDowload() {
var pdf = new jsPDF('p', 'pt', 'a4');
pdf.fromHTML($('.mySelector').html());
pdf.save('report.pdf');
}
答案 2 :(得分:0)
尝试一下:
$('.mySelector').get(0)
请勿使用.html()
编辑: 尝试添加短暂的暂停:
pdf.addHTML($('.mySelector').get(0),function() {
setTimeout(function() {
pdf.save('report.pdf');
},1000);
)};