【问题标题】:return onclick value to a JavaScript function将 onclick 值返回给 JavaScript 函数
【发布时间】:2012-04-07 11:34:56
【问题描述】:

我创建了一个带有调用 JavaScript 函数的 onclick 事件的锚点。 JavaScript 函数返回一些值。我想在另一个 JS 函数中使用该值。

例如 loading() 将返回一些值,该值将传递给另一个 js 函数。如何捕获并存储返回值,然后将此值传递给该函数?

【问题讨论】:

  • 正如下面的 cmets 所证明的那样,您在准确解释您需要什么的问题上做得很差。也许您应该编辑您的问题以明确说明用户体验(用户操作和系统响应)应该是什么。
  • 我同意...但既然你是新的,没有反对意见。

标签: javascript html


【解决方案1】:

你能简单地用内部函数调用外部函数吗?

function outerFunc(a)
{
  alert(a);
}

function innerFunc()
{
  return 'test';
}

onclick="outerFunc(innerFunc());"

或者,如果您需要在另一个事件中使用返回值,请设置一个变量。

var retval;
function outerFunc()
{
  if(retval) alert(retval);
}

function innerFunc()
{
  retval = 'test';
  return retval;
}

onclick="return innerFunc();"

在其他 onclick 事件中

onclick="return outerFunc();"

【讨论】:

  • 情况就像 onclick 返回值,我必须存储并传递给其他 js 函数,该函数将在单击另一个锚点时被调用。
  • -1 用于使用 onclick 属性而不是在 JavaScript 中附加事件处理程序。
  • 对不起,它不起作用,我猜当你关闭页面时全局变量被删除
  • @Phrogz - 所以你是说使用内置属性是一件坏事?我觉得你疯了。
  • @Jack - 是的,当页面关闭时全局变量会消失。您唯一的选择是使用 cookie 或将值传回服务器进行存储(会话、数据库等)并在用户重新访问页面时调用它。
【解决方案2】:

a) 使用 global variable 例如 (also)

var passVar=null;

function A(){
  //set value
  passVar='hello';
}

function B(){
  //get value 
  alert(passVar);
}

b) 如果您的函数在另一个正在消耗存储值的页面上,您可能正在使用 setItem() 、getItem() 和浏览器的更多高级功能来使用 browser session storage 机制

【讨论】:

  • @Phrogz- 它正在使用 cookie,因为我想在另一个页面上使用返回值,我已将其存储到 cookie 中并再次使用它,谢谢大家的帮助。
【解决方案3】:

您在评论中提到要保存以供以后使用。您可以使用 JavaScript 函数是闭包这一事实,因此可以访问在同一范围内声明的局部变量:

var clickedValue; // No need to set a value here, just declare is

myAnchor.addEventListener('click',function(evt){
  // Call the other function, setting the 'this' scope to be the anchor
  // The scope of the variable set it the one above
  clickedValue = someFunction.call(myAnchor,evt);
},false);

/* later on… */

otherFunction(clickedValue);

【讨论】:

  • 我已经编辑了我的答案,以说明您在评论中提到您不想立即使用返回值。
【解决方案4】:

这样的?

<a onClick="loading(myFunction());">

如果myFunction() 是您的原始onClick 代码,它将随后传递给loading

【讨论】:

  • 实际上我想存储该返回值并在以后不在同一个调用中使用它。
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多