【问题标题】:When setting onclick using Javascript, the onclick code is running使用 Javascript 设置 onclick 时,onclick 代码正在运行
【发布时间】:2013-01-06 22:57:33
【问题描述】:

当点击 div 时,它应该更改 div 中的文本(使用 innerHTML 完成),但我还想更改 div 的 onclick 功能

这是我的 JS 代码

document.getElementById('select_image').onclick = document.upload.submit();

当点击 div 时,它会立即提交表单,而不是点击隐藏文件上传 div(之前这样做过)

如果我在浏览器上按回,它会显示带有更新文本的 div

谢谢

编辑:看起来不是很清楚

我有一个 div (select_image),当单击它时,它会在隐藏的输入文件元素上使用 JS (.click),因此您可以选择一个文件。

这个 div 正在使用 onclick="function()" 运行一个函数来更改该 div 中的文本,我还希望它更改 onclick 事件以这次实际提交表单(而不是单击隐藏文件输入) 选择文件时。

我正在使用 onchange="" 事件在文件输入上运行以下 JS 函数

function selected_image(image) {
    document.getElementById('select_image').innerHTML = 'click here to upload <span id="selected">' + image.replace('C:\\fakepath\\', '') + '</span>';
    document.getElementById('select_image').onclick = document.upload.submit();
}

<div id="select_image" onclick="document.forms['upload'].elements['image'].click();">click here to select your image</div>

谢谢

【问题讨论】:

  • 提供您的问题样本

标签: javascript


【解决方案1】:

submit(); 中的括号导致函数立即执行。现在您尝试将返回值从 submit 分配给 onclick 属性。一个可行的解决方案是使用匿名函数来处理事件。

document.getElementById('select_image').onclick = function () {
    document.upload.submit();
    return;
}

【讨论】:

  • 那行不通。当onclick被执行时,this将是select_image而不是upload,所以submit会尝试提交一些不能提交的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多