【问题标题】:JS: pass variable onclickJS:通过变量onclick
【发布时间】:2013-04-03 15:03:06
【问题描述】:

我正在尝试将变量传递给函数,我知道有很多关于此的主题,并且我几乎尝试了所有建议,但仍然无法使其正常工作,这些是我的尝试:

编辑:没有点击,一切正常

var filename = file.name;

<button class="btn btn-danger delete" onclick="deleteImage(\''+filename+'\');">

导致: Uncaught SyntaxError: Unexpected token ILLEGAL

<button class="btn btn-danger delete" onclick="deleteImage(&quot;'+type+'&quot;);">

导致(警报):“文件名”

<button class="btn btn-danger delete" onclick="deleteImage('" + filename + "');">

导致: Uncaught SyntaxError: Unexpected token ILLEGAL

<button class="btn btn-danger delete" onclick="deleteImage(" + filename + ");">

导致: Uncaught SyntaxError: Unexpected token }

这是完整的代码(修改后的 blueimp 文件上传器)

    <script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
    <tr class="template-download fade">
        {% if (file.error) { %}
            <td></td>
            <td class="name"><span>{%=file.name%}</span></td>
            <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
            <td class="error" colspan="2"><span class="label label-important">Error</span> {%=file.error%}</td>
        {% } else { 
            // add the image urls to the file inputbox
            var filename = file.name;
            var prev = $("#mFile").val(); 
            $("#mFile").val(prev + file.name + ","); 

            %}
            <td class="preview">{% if (file.thumbnail_url) { %}
                <a href="modules/mod_stern_form_prijsopgave/upload/server/php/files/{%=file.name%}" title="{%=file.name%}" data-gallery="gallery" download="{%=file.name%}"><img src="modules/mod_stern_form_prijsopgave/upload/server/php/files/thumbnail/{%=file.name%}"></a>
            {% } %}</td>
            <td class="name">
                <a href="modules/mod_stern_form_prijsopgave/upload/server/php/files/{%=file.name%}" title="{%=file.name%}" data-gallery="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a>
            </td>
            <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
            <td colspan="2"></td>
        {% } %}
        <td>
            <button class="btn btn-danger delete" onclick="deleteImage('" + filename + "');" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}"{% if (file.delete_with_credentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
                <i class="icon-trash icon-white"></i>
                <span>Verwijderen</span>
            </button>
        </td>
    </tr>
{% } %}
</script>

并像这样进行测试:

    function deleteImage(filename) {
      alert(filename);
    }

我做错了什么?谢谢你的建议

【问题讨论】:

  • 这是什么系统?看起来可能是 jQuery 模板或 knockoutjs?这个问题需要更好的标记。
  • 是的,jquery,我会添加标签。

标签: javascript jquery variables jquery-templates


【解决方案1】:

试试onclick值的模板格式:

onclick="deleteImage('{%=filename%}');"

也试试 file.name

onclick="deleteImage('{%=file.name%}');" 

【讨论】:

  • 大声笑..我已经尝试过接近这个的东西..这有效!太感谢了。这可能会让你脸上露出笑容:我只花了 2 个小时来完成这个
【解决方案2】:
<button id="deleteOnClick" class="btn btn-danger delete">...</button>

在javascript中:

document.getElementById("deleteOnClick").onclick = function(){deleteImage(filename);}

编辑:

如果要删除仅由原始文件名值指定的文件:

var deleteByFile = (function (filename){
    return function(){deleteImage(filename);};
}(filename));
document.getElementById("deleteOnClick").onclick = deleteByFile

【讨论】:

  • 所有建议导致:Uncaught TypeError: Cannot set property 'onclick' of null
  • 您是否在按钮上添加了id?如果没有,那么您可以改用$(".btn-danger").click(deleteByFile);
  • 现在使用 gp. 的回答修复了它,非常感谢您的帮助伙伴
  • 非常感谢,“双重包装”方法救了我
【解决方案3】:

您无法从 HTML 访问 JS 变量。你必须这样做:

var filename = 'testing';
document.getElementById('testdiv')
    .setAttribute('onclick', "alert('" + filename + "')");
filename = 'more testing';

Here is a fiddle.

【讨论】:

  • 我也试过这个,结果是:Uncaught SyntaxError: Unexpected token }
  • @MaartenHartman 那么这是代码中其他地方的问题,因为我的代码肯定没有}
  • 我知道,通常你的建议应该有效,但没有 onclick 一切正常,所以代码没有缺陷。
  • 感谢您到目前为止的帮助,最后的建议导致:未捕获的类型错误:无法设置属性 'onclick' of null
  • @Maarten 好吧,你的 div 是 id "testdiv" 吗?
【解决方案4】:

尝试使用onclick="deleteImage(" + filename + ");"

【讨论】:

    【解决方案5】:

    您可以设置一个变量,例如 var counter = 1;

    在需要的地方,你可以像这样更新它

         onclick="updateCount('+counter+')"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-28
      • 2021-03-08
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多