jQuery JS:传递变量 onclick

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15948427/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 16:05:58  来源:igfitidea点击:

JS: pass variable onclick

javascriptjqueryvariablesjquery-templates

提问by Maarten Hartman

I'm trying to pass a variable to a function, I know there are many topics about this, and I've nearly tried all suggestions, but still can't get it to work, these are my attempts:

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

edit:without the onclick, everything is working fine

编辑:没有onclick,一切正常

var filename = file.name;

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

results in:Uncaught SyntaxError: Unexpected token ILLEGAL

结果:未捕获的语法错误:意外的令牌非法

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

results in (alert):'filename'

结果(警报):'文件名'

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

results in:Uncaught SyntaxError: Unexpected token ILLEGAL

结果:未捕获的语法错误:意外的令牌非法

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

result in:Uncaught SyntaxError: Unexpected token }

结果:未捕获的语法错误:意外的令牌}

this is the full code (modified, blueimp fileuploader)

这是完整的代码(已修改,blueimp fileuploader)

    <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>

and testing like this:

并像这样测试:

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

what am I doing wrong? Thanks for your advice

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

采纳答案by gp.

try the template format for onclick value:

尝试使用 onclick 值的模板格式:

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

try file.name as well

也试试 file.name

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

回答by Doorknob

You can't access JS variables from your HTML. You must do something like this:

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

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

Here is a fiddle.

这是一个小提琴

回答by user2153497

<button id="deleteOnClick" class="btn btn-danger delete">...</button>

and in javascript:

在 javascript 中:

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

edit:

编辑:

if you want to delete the file specified only by the original filename value:

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

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

回答by Sourja Banerjee

You can set a varaiable like var counter = 1;

你可以设置一个变量,比如 var counter = 1;

Wherever it is required, you can update it like

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

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

回答by Ripa Saha

try to use onclick="deleteImage(" + filename + ");"

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