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
JS: pass variable onclick
提问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("'+type+'");">
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';
回答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 + ");"