【发布时间】:2020-12-06 22:26:48
【问题描述】:
我正在使用 java-script 使用 innerHTML 属性在我的 html/php 页面上基于 js 变量呈现动态 svg。
这是一个复杂的 svg,所以我将字符串拆分为多行。
我当前的代码运行良好;
document.getElementById('diagram1').innerHTML
= '<svg width="'+canvas_width+'" height="'+canvas_height+'">'
+ '<line x1="0" y1="'+depth+'" x2="'+width+'" y2="'+depth+'" stroke="#ff6622" stroke-width="3"></line>'
+ '<rect width="'+svg_width+'" height="'+svg_height+'" x="100" y="140" fill="#CCC"></rect>'
+ '</svg>';
但是,如果我将任何行包装在 if 语句中,那么即使满足 if 语句的条件,该行也永远不会呈现。
document.getElementById('diagram1').innerHTML
= '<svg width="'+canvas_width+'" height="'+canvas_height+'">'
if (test == 'on') {
+ '<line x1="0" y1="'+depth+'" x2="'+width+'" y2="'+depth+'" stroke="#ff6622" stroke-width="3"></line>'
}
+ '<rect width="'+svg_width+'" height="'+svg_height+'" x="100" y="140" fill="#CCC"></rect>'
+ '</svg>';
有没有不同/更好的方法来做到这一点?我错过了什么吗?
【问题讨论】:
-
这不是动态构建字符串的方式。我确信控制台中的错误消息指向我们。
-
控制台没有显示错误。如果没有任何其他信息,这不是一个特别有用的评论。我确实问过是否有不同/更好的方法来做到这一点,所以我很高兴听到你可能有的任何解释。
标签: javascript if-statement svg innerhtml