Javascript:在函数中赋值var并使用var out该函数

时间:2013-02-21 09:45:01

标签: javascript function variables

<script type="text/javascript">
var statustext="test";
$zack(function() {
  $zack.setOnStatus(changelable);
});
function changelable(status) {
  if (status=='A')
    statustext="OK";
  else if (status=='B')
    statustext="Ready";
  else if (status=='C')
    statustext="Go";
  document.getElementById('title').innerHTML = statustext; // OK, Ready or Go
}
</script>

document.getElementById('title').innerHTML显示 OK,Ready或Go

但是当我在上面的脚本下面的某个地方使用这个脚本时,statustext变量包含 test 文本,如前所述:

<script type="text/javascript">
document.getElementById('title2').innerHTML = statustext; // test
</script>

我想多次使用{em> OK,Ready或Go 文本statustext。怎么做?

1 个答案:

答案 0 :(得分:4)

您的title2代码在加载页面时立即运行 ,但您的其他代码会运行以响应事件(状态更改事件或任何调用changelable的事件)。

如果您想将title2设置为与title设置相同的内容,请移动此行:

document.getElementById('title2').innerHTML = statustext;

... 进入 changelable函数,就在这一行之后:

document.getElementById('title').innerHTML = statustext;

e.g:

document.getElementById('title').innerHTML = statustext;
document.getElementById('title2').innerHTML = statustext;

或者如果您愿意:

document.getElementById('title').innerHTML = document.getElementById('title2').innerHTML = statustext;

另外,您的if/else if/else if序列实际上是switch语句的用途:

function changelable(status) {
  switch (status) {
    case 'A':
      statustext="OK";
      break;
    case 'B':
      statustext="Ready";
      break;
    case 'C':
      statustext="Go";
      break;
  }
  document.getElementById('title').innerHTML = statustext;
  document.getElementById('title2').innerHTML = statustext;
}

或者您可以使用查找表:

var statustext="test";
var statusLabels = {
    A: "OK",
    B: "Ready",
    C: "GO"
};
$zack(function() {
  $zack.setOnStatus(changelable);
});
function changelable(status) {
  statustext = statusLabels[status] || statustext;
  document.getElementById('title').innerHTML = statustext;
  document.getElementById('title2').innerHTML = statustext;
}