2011年11月20日 星期日

JavaScript偵測變數是否存在

偵測變數是否存在:
只須在變數名稱之前加上 window 一字,再加上 if 敘述,就可以知道該變數是否存在, 或是否被定義 (defined)。


程式範例:偵測變數 x 和 y 是否存在
<script>
var x = 10 ;
var y ;
document.write("<br>x = " + x + "<br>");
if (window.x) document.write("x is defined");
else document.write("x is NOT defined");
document.write("<br>y = " + y + "<br>");
if (window.y) document.write("y is defined");
else document.write("y is NOT defined");
document.write("<br>");
if (window.z) document.write("z is defined");
else document.write("z is NOT defined");
document.write("z = " + z);
</script>


例子說明:
因為變數 x 被定義了,而數值是 10 ,所以 window.x 會傳回 true 給 if 敘述。雖然變數 y 被定義了,但沒有指定它的值,因此它的值是 Null,window.y 會傳回 false 給 if 敘述。 變數 z 根本不存在,所以結果和變數 y 一樣,而且會導致執行錯誤: 'z' is not defined 。


程式範例:永遠只在同一個視窗開啟 URL
<script>
function openurl() {
var url = "index.html" ;
if (!window.winvar || winvar.closed) winvar = window.open(url);
else winvar.location = url;
}
</script>
<form>
<input type=button value="Open URL in one window only"
onclick="openurl()">
</form>


例子說明:
!window.winvar || winvar.closed
偵測變數 winvar 是否未被定義,或者是否被關閉了,如果是的話,就自行定義 winvar。否則,就表示變數 winvar 已經被定義,而且它未被關閉,因此我們可以用它的 location 屬性來開啟 URL。

沒有留言:

張貼留言