我在我的应用程序中使用了svg图标并使用了svg来绘制图表.当我使用html2canvas生成图像时,所有svgs都被忽略并且生成的图像没有所有svgs.
我正在使用下面的函数来生成图像.
function svgToCanvas (targetElem) {
var nodesToRecover = [];
var nodesToRemove = [];
var svgElem = targetElem.find('svg');
svgElem.each(function(index, node) {
var parentNode = node.parentNode;
var svg = parentNode.innerHTML;
var canvas = document.createElement('canvas');
canvg(canvas, svg);
nodesToRecover.push({
parent: parentNode,
child: node
});
parentNode.removeChild(node);
nodesToRemove.push({
parent: parentNode,
child: canvas
});
parentNode.appendChild(canvas);
});
html2canvas(targetElem, {
allowTaint: true,
onrendered: function(canvas) {
// var ctx = canvas.getContext('2d');
// ctx.webkitImageSmoothingEnabled = false;
// ctx.mozImageSmoothingEnabled = false;
// ctx.imageSmoothingEnabled = false;
var img_PNG = Canvas2Image.saveAsPNG(canvas);
}
}); …Run Code Online (Sandbox Code Playgroud) 我想创建一个函数来切换我的代码的任何布尔值,但我无法得到预期的结果:
function toggle(x){
x=!x;
}
var test=false;
toggle(test);
alert(test);
Run Code Online (Sandbox Code Playgroud)
为什么不回归true呢?
我想做这样的事情:
function defineGlobalConst(){
const s = 10;
}
Run Code Online (Sandbox Code Playgroud)
但我想从代码中的任何地方访问变量 s,因为我没有输入“const”
我认为Arrays是对象所以当我执行这行代码时,我期待得到[3,3,3]因为我改变了数组.但是我得到了[2,4,6]
var arr = [2,4,6];
function checkArr(arr){
arr = [3,3,3];
}
console.log(arr)
Run Code Online (Sandbox Code Playgroud)
如果我添加一个return语句,那么我得到了我期望的值.我想知道为什么在执行函数期间给arr一个新值时需要返回.
var arr = [2,4,6];
function checkArr(arr){
arr = [3,3,3];
return arr;
}
console.log(arr)
Run Code Online (Sandbox Code Playgroud)
最后,在这个for循环中我不使用,return并且数组值被更改!我有点困惑.为什么第一个例子没有改变值arr?
var arr = [2,4,6];
function checkArr(arr){
for(var i = 0; i<arr.length; i++){
arr[i] = 3
}
}
console.log(arr)
Run Code Online (Sandbox Code Playgroud) 在下面的代码中,我预计3个日志的结果将是相同的.
但他们不是.
var m = (function () {
var arr = [
{a: 1, b: 2},
{c: 3, d: 4}
];
return {
getArr: function () {
return arr;
}
};
})();
var myArr = m.getArr();
console.log(myArr);
myArr.pop();
console.log(m.getArr());Run Code Online (Sandbox Code Playgroud)
确保数组不作为引用传递的最佳方法是什么?
用return arr.map()吗?