【问题标题】:Using ejs input for js if statement对 js if 语句使用 ejs 输入
【发布时间】:2020-09-24 05:51:17
【问题描述】:

我有一个需要为课程做的代码问题。我有一个有用户的数据库,另一个表有用户可以访问的标题。我正在尝试创建一个页面,他们可以在其中编辑用户,当他们单击按钮时,表单会自动填充 id、名字和姓氏。

现在我正在尝试显示所选用户目前可以访问的访问权限。而我认为只是一个简单的 if 语句变得令人头疼,似乎我无法访问要插入的 html 代码中的 id 变量,当我尝试将 if 语句放在外面时,它说错误使用 http 标头,就像它发送太多渲染一样。我怎样才能做到这一点?

所以这里的代码可以工作,但它会加载所有用户的标签,但我想根据 id 过滤结果。

<tbody>
 <% all_users_to_modify.forEach(function(row){ %>
  <tr>
   <td>
    <button class="btn btn-primary m-b-0"
     onClick="fillForm('<%= row.id %>','<%= row.f_name %>','<%= row.l_name %>');";
     onclick="moneyCalc('<%= row.id %>')" >
     <%= row.id %>
    </button>
   </td>
   <td><%= row.f_name %></td>
   <td><%= row.l_name %></td>
   <td><%= row.email %></td>
   <td><%= row.phone_number %></td>
  </tr>
 <% }); %>
</tbody>

<table class="table table-striped table-bordered nowrap"> 
 <thead>
  <tr>
   <th>Acceso</th>
  </tr>
 </thead>
 <tbody id="lastResult">

 </tbody>
</table>

function moneyCalc(id) {
    'use strict';
    var id = document.getElementById('id').value;

    if (id) {
        var html_to_insert = `
      <% list_of_all_users_tabs.forEach(function(row1){ %>
       <tr>
        <td><%= row1.tab_name %> </td>
       </tr>
      <% }); %>                                
        `;
     lastResult.innerHTML += html_to_insert;
    }
  }

现在这就是我想要做的,在 list_of_all_users_tabs 的每一行中都有一个列是 user_id,另一列是 tab_name。所以我有两个想法,但似乎都没有。

第一个想法是放置一个while循环来比较数据库中的user_id和输入id但是我得到:错误[ERR_HTTP_HEADERS_SENT]:

function moneyCalc(id) {
    'use strict';
    var id = document.getElementById('id').value;
    if (id) {
      while(list_of_all_users_tabs.user_id == id) {
        var html_to_insert = `
        <% list_of_all_users_tabs.forEach(function(row1){ %>
          <tr>
            <td><%= row1.tab_name %> </td>
          </tr>
        <% }); %>                                
        `;
      lastResult.innerHTML += html_to_insert;
      }
    }
  }

第二个想法在 html 代码中有一个 if 语句,但是它说 id not defined:

function moneyCalc(id) {
    'use strict';
    var id = document.getElementById('id').value;

    if (id) {
        var html_to_insert = `
      <% list_of_all_users_tabs.forEach(function(row1){ %>
        <% if(row1.id == id) { %>
            <tr>
              <td><%= row1.tab_name %> </td>
            </tr>
        <% } %>
      <% }); %>                                
        `;
      lastResult.innerHTML += html_to_insert;
      }
  }

【问题讨论】:

  • 第一件事,将你的函数包装在 标签内
  • 是的,我认为我只会包含必要的代码,它们都包含在 ejs 文件底部的脚本中。
  • 我发布了一个答案,它对其他人也有帮助,所以接受这个答案。

标签: javascript html node.js sqlite ejs


【解决方案1】:

将您的 javascript 代码包装到 &lt;script&gt; 标记中。

<script>
//Your code goes here
</script>

【讨论】:

    【解决方案2】:

    您需要在路由文件中将标头状态设置为 200。

    res.json({
                success: 'updated',
                status: 200
            })
    

    并且只在&lt;script&gt; &lt;/script&gt;标签内写你的JS代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多