将值传递给onlick按钮帕格

时间:2019-02-04 20:02:10

标签: javascript onclick attributes pug

我正在尝试使用Pug将js函数传递给按钮。我在这里看到了this question,但它似乎并未涵盖如何格式化js函数。

我找不到说明如何执行此操作的文档,但也许它在pug.org上,我只是听不懂。任何指向文档的链接/说明都很好。

无论如何,我有以下内容:

extends layout

block content
 h1=title
  -var itemNumber= 1;
  -function add_fields() {
    -itemNumber++;
    -var objTo = document.getElementById('incomeItems');
    -var divtest = document.createElement("div");
    -divtest.innerHTML = '<div class="label">Item ' + itemNumber +':</div><div class="content"><span>Item Name: <input type="text" style="width:150px;" name="itemName[]" value="" /><small></small></span><span> Income Amount: <input type="number" style="width:60px;" namae="itemAmount[]" value="" /><small></small></span></div>';
    -objTo.appendChild(divtest);
  -}

  form(method='POST' action='')
    div.form-group
      label(for='name') Budget Name:
      input#budget_name.form-control(type='text', placeholder='Such as: New Building Budget' name='name' required='true' value=(undefined===budget ? '' : budget.name) )
    div.form-group#incomeItems
      label(for='income') Income:
      input#income.form-control(type='number', name='income' required='true' value=(undefined===budget ? '' : budget.income) )
  button.btn.btn-primary(type='button' onclick='add_fields()') Add Income Item
    div.form-group
      label(for='expenses') Expenses:
      input#expenses.form-control(type='number', name='expenses' required='true' value=(undefined===budget ? '' : budget.expenses) )
button.btn.btn-primary(type='submit') Submit

if errors 
  ul
    for error in errors
      li!= error.msg

我只能使用script.来使其工作(也许很好,但我认为也许不是解决此问题的最佳方法?)

extends layout

block content
 h1=title
 script.
      var itemNumber= 1;
      function add_fields() {
          itemNumber++;
          var objTo = document.getElementById('incomeItems');
          var divtest = document.createElement("div");
      divtest.innerHTML = '<div class="label">Item ' + itemNumber +':</div><div class="content"><span>Item Name: <input type="text" style="width:150px;" name="itemName[]" value="" /><small></small></span><span> Income Amount: <input type="number" style="width:60px;" namae="itemAmount[]" value="" /><small></small></span></div>';
      objTo.appendChild(divtest);
  }

  form(method='POST' action='')
    div.form-group
      label(for='name') Budget Name:
      input#budget_name.form-control(type='text', placeholder='Such as: New Building Budget' name='name' required='true' value=(undefined===budget ? '' : budget.name) )
    div.form-group#incomeItems
      label(for='income') Income:
      input#income.form-control(type='number', name='income' required='true' value=(undefined===budget ? '' : budget.income) )
  button.btn.btn-primary(type='button' onclick='add_fields()') Add Income Item
    div.form-group
      label(for='expenses') Expenses:
      input#expenses.form-control(type='number', name='expenses' required='true' value=(undefined===budget ? '' : budget.expenses) )
button.btn.btn-primary(type='submit') Submit

if errors 
  ul
    for error in errors
      li!= error.msg

我在https://pugjs.org/language/code.html找不到script.,所以我不确定应该怎么做。谢谢!

1 个答案:

答案 0 :(得分:0)

最好在.script内编写客户端JavaScript / jQuery代码。当编译Jade / Pug以产生结果html时,使用'-' at the beginning of a line编写的JavaScript代码应该在服务器端运行。因此,您可以在此处编写代码,例如当您要遍历数组等时,并为数组中的每个项目创建一些相应的html结构。请注意,这是在服务器端完成的,在发送到浏览器的html文件中找不到此循环代码。

但是,script代码旨在最终出现在浏览器中的html文件中并仅在其中执行。因此,将其放在.script内是完全可以的,它只是将包含的代码按原样放在生成的html文件的<script></script>标记内。