【问题标题】:Django template onclick inline html javascript alternativeDjango 模板 onclick 内联 html javascript 替代
【发布时间】:2018-07-31 12:46:59
【问题描述】:

我读到使用onclick 已被弃用且是不好的做法。

我有这个do_something 函数,它将处理onclick 内部的数据。我如何将其转换为 javascript:

{% for user in all_user %}
<tr>
    <td>{{ user.code }}</td>
    <td>
        <button type="button" onclick="do_something('{{ user.name }}', '{{ user.age }}', 1, '{{ user.desc }}');">small</h6></button>
    </td>
</tr>
{% endfor %}

【问题讨论】:

    标签: javascript python html django django-templates


    【解决方案1】:
    1. 在按钮上设置一个类选择器,以便您可以通过 Javascript 将事件侦听器应用到它。
    2. 您的函数需要每个用户唯一的参数,因此您需要将这些参数设置为每个按钮上的数据属性

    {% for user in all_user %}
      <tr>
          <td>
              <button class="user-action-btn" type="button"  
              data-name="{{ user.name }}" 
              data-age="{{ user.age }}" 
              data-desc="{{ user.desc }}">small</button>
          </td>
      </tr>
    {% endfor %}
    1. 在 Javascript 中,按类名获取元素并为每个元素设置事件处理程序。

    以下是 Javascript 代码示例

    (function() {
            var classname = document.getElementsByClassName("user-action-btn");
    
            var myFunction = function(e) {
                e.preventDefault();
                var name = this.getAttribute("data-name");
                var age = this.getAttribute("data-age");
                var desc = this.getAttribute("data-desc");
                do_something(name, age, 1, desc)
            };
    
            for (var i = 0; i < classname.length; i++) {
                classname[i].addEventListener('click', myFunction, false);
            }
    })();

    这是 JQuery 等价物

    $( document ).ready(function() {
        $('.user-action-btn').on('click', function(e){
            e.preventDefault();
            var name = $(this).data('name');
            var age = $(this).data('age');
            var desc = $(this).data('desc');
            do_something(name, age, 1, desc);
    });

    【讨论】:

    • 谢谢,我不知道 html 上的这些数据。很好的帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-06-10
    • 2011-06-29
    • 2016-01-10
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    相关资源
    最近更新 更多