动态添加时脚本不是 运行

Script is not running when added dynamically

{include file="head.tpl" title="Combate"}
{include file="navBar.tpl" dir=$dir}
<table id="CombatLister">

</table>

Nombre: <input type="text" id="nombrePJ">  
AC <input type="number" id="ACPJ">  
Iniciativa <input type="number" id="Init">
<button id="añadirParty" onclick="addPJButt()">Añadir</button>



<script>

function addPJButt(){
   var name=document.getElementById("nombrePJ").value;
   var ac=document.getElementById("ACPJ").value;
   var iniciativa=parseInt(document.getElementById("Init").value);
   addPJ(name,ac,iniciativa);
}
function addPJ(nombre,ac,init){
    var table=document.getElementById("CombatLister");
    var row=table.insertRow(0);
    var cellNombre=row.insertCell(0);
    var cellInit=row.insertCell(1);
    var cellAc=row.insertCell(2);
    cellNombre.innerHTML=nombre;
    cellInit.innerHtml=init;
    cellAc.innerHtml=ac;
}

</script>
<script>
{$x=0}
{foreach $party as $pj}

addPJ({$pj.nombre},{$pj.ac},{$pj.init})

{/foreach}
</script>

我有一个聪明的模板,它使用另一个页面的数组,将其添加到 "CombatLister" table。然而,出于某种原因,addPJ() 脚本没有 运行。我只是在学习 Javascript,所以我可能会跳过一些东西,但到目前为止,我还没有找到它为什么不起作用的答案。

我尝试使用 addPJButt() 来检查 addPJ() 脚本是否错误,但该脚本正在运行:当我将数据放在输入类型上时,它们正确地添加了名称。

我觉得不是Smarty的问题。检查页面的源代码是否相似,在我调用 $pj:

的地方写这个
<script>

    addPJ(Galahad,14,5);

</script>

PS: 作为一个额外的问题,但不是那么重要,在 addPJ 的 insertCell 方法上只添加第一个单元格。

addPJ(Galahad,14,5); 正在查找未定义的变量 Galahad

您需要引用它以便打印为 javascript 字符串

尝试

addPJ('{$pj.nombre}',{$pj.ac},{$pj.init})

注意:我已经多年没有使用 smarty 并假设引号是文字