You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS动态创建SVG后JsBarcode不显示,如何批量生成可打印条码?

批量生成同一条码用于打印的问题

我需要将同一条码多次显示以用于打印,但是通过JavaScript动态创建<svg>标签并调用JsBarcode生成条码后,条码无法显示。

我的代码如下:

$scope.generatePrintBarcodePage = function (sampleCode, number) {
    $scope.barCodePrint = [];
    var i;
    for (i = 1; i <= number; i++) {
        JsBarcode("#barcode" + i, sampleCode, {
            height: 40,
            displayValue: true
        });
    }
}


$scope.showBarcode = function (sampleCode, number) {
  for (i = 1; i <= number; i++) {      
    const node = document.createElement("svg");
    node.setAttribute("id", "barcode" + i);

    document.getElementById("printPageBarcode").appendChild(node);
    
    JsBarcode("#barcode" + i, sampleCode.SampleCode, {
           
  }
}

此时没有条码显示,但如果预先在HTML文件中创建<svg>标签,条码就能正常显示,不过这种方式无法灵活控制需要打印的条码数量:

<div id="printPageBarcode" style=" height: 500px;">
    <svg id="barcode1"></svg> <br />
    <svg id="barcode2"></svg>  <br />
    <svg id="barcode3"></svg>  <br />
    <svg id="barcode4"></svg>  <br />
    <svg id="barcode5"></svg> <br />
</div>

请问如何实现同一条码的批量生成?


解决方案

问题根源有两点:

  1. showBarcode函数存在语法错误:JsBarcode调用的配置对象未闭合,函数本身也缺少闭合括号,导致代码无法正常执行。
  2. 动态创建SVG后使用ID选择器查找元素,可能存在DOM更新延迟的问题,直接传入DOM节点给JsBarcode是更可靠的方式。

修正后的完整代码如下:

$scope.showBarcode = function (sampleCode, number) {
  // 先清空容器,避免重复生成条码
  const container = document.getElementById("printPageBarcode");
  container.innerHTML = "";

  for (let i = 1; i <= number; i++) {      
    const svgNode = document.createElement("svg");
    svgNode.setAttribute("id", "barcode" + i);
    const brNode = document.createElement("br");

    container.appendChild(svgNode);
    container.appendChild(brNode);
    
    // 直接传入创建好的SVG节点,无需通过ID查找
    JsBarcode(svgNode, sampleCode.SampleCode, {
      height: 40,
      displayValue: true
    });
  }
}

说明:

  • 新增容器清空逻辑,避免多次调用函数时条码重复累积。
  • 直接将动态创建的SVG节点传给JsBarcode,跳过ID选择器查找,避免DOM渲染延迟问题。
  • 补全所有语法缺失的括号,保证代码能正常解析执行。

这样修改后,即可根据传入的number参数灵活生成对应数量的条码,且能正常显示。

内容的提问来源于stack exchange,提问作者Gacom111haaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:57:24