JS:传递变量onclick

问题描述:

我想将一个变量传递给一个函数,我知道有很多关于这个的话题,并且我几乎尝试了所有的建议,但仍然无法让它工作,这些都是我尝试:JS:传递变量onclick

编辑:没有的onclick,一切工作正常

var filename = file.name; 

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

结果:未捕获的SyntaxError:意外的标记非法

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

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

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

结果:未捕获的SyntaxError:意外令牌非法

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

结果:未捕获的SyntaxError:意外令牌}

这是完整的代码(已修改,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); 
    } 

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

+1

什么系统,这是更新呢?看起来它可能是jQuery模板或knockoutjs?这个问题需要更好的标记。 – drquicksilver 2013-04-11 12:12:21

+0

是的,jquery,我会添加标签。 – 2013-04-11 12:12:43

尝试的onclick值模板格式:

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

尝试文件。名称,以及

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

lol..I've尝试一些接近这个..这个工作!非常感谢。这可能会带来你的脸上的笑容:我只花了2小时在这 – 2013-04-11 12:58:59

+0

高兴地帮助:) – 2013-04-11 13:06:40

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

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

Here is a fiddle

+0

我试过这个,结果如下:Uncaught SyntaxError:Unexpected token} – 2013-04-11 12:15:17

+0

@MaartenHartman那么这是代码中的其他地方的问题,因为我的代码绝对没有'}'。 – Doorknob 2013-04-11 12:16:12

+0

我知道,通常你的建议应该可以工作,但是如果没有onclick,一切工作都很好,所以代码没有缺陷。 – 2013-04-11 12:20:09

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

感谢您的输入,但确确实实,我不能用这个 – 2013-04-11 12:16:32

+0

所有的建议导致:遗漏的类型错误:不能设置为空的特性“的onclick” – 2013-04-11 12:45:31

+0

是否在按钮上添加了“id”?如果不是那么你可以使用'$(“。btn-danger”)。click(deleteByFile);'而不是。 – user2153497 2013-04-11 12:54:27

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

您可以设置类似VAR计数器= 1 varaiable;

任何需要的地方,你可以像

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