<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
。怎么做?
答案 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;
}