iT邦幫忙

0

(已解決)請問 javascript function 外如何使用改變好的變數值?

  • 分享至 

  • xImage

大家好
以下是我的目前遇到問題
點選不同的按鈕
function 內可以改變變數 btnValue 的值
想請問在 function 外也可以使用改變好的變數 btnValue 的值嗎?如何使用?
目前程式如下:

js

<script type="text/javascript">
var btnValue = 1;
document.onclick=function()
{
    var obj = event.srcElement; 
    if(obj.type == "button")
    { 
        if(obj.id == "fast"){
            btnValue = 1.2;
            //alert(btnValue); //可以成功改變 btnValue = 1.2,每一次觸發按鈕,也都可以成功印出
        }else if(obj.id == "slow"){
            btnValue = 0.8;
            //alert(btnValue); //可以成功改變 btnValue = 0.8,每一次觸發按鈕,也都可以成功印出
        }
    } 
}
alert(btnValue); //想請問在 function 外如何使用改變好的 btnValue 值?
</script>

html

<input id="fast" type="button" value="快"/> 
<input id="slow" type="button" value="慢"/> 

謝謝

froce iT邦大師 1 級 ‧ 2020-03-03 17:16:31 檢舉
你沒搞懂同/異步的執行。
你目前最後的alert是在js被載入的時候就會執行了,然後on是等事件發生才會執行。

你寫的code翻譯出來就是跟電腦說:
你給我持續監看有沒有人click,有人click的時候做那些事,然後'立刻'給我一個alert
小斑 iT邦新手 3 級 ‧ 2020-03-03 17:27:56 檢舉
原來如此,謝謝,我了解了^^"
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
dragonH
iT邦超人 5 級 ‧ 2020-03-03 17:03:43

看不懂

阿你不就有用了嗎

codepen

不然 alert 印出來是什麼 XD

看更多先前的回應...收起先前的回應...

他的意思應該是外面那個 alert(btnValue) 出來要等於 1.2 或 0.8
值有改只是他不知道 XD

dragonH iT邦超人 5 級 ‧ 2020-03-03 17:14:05 檢舉

/images/emoticon/emoticon10.gif

小斑 iT邦新手 3 級 ‧ 2020-03-03 17:14:30 檢舉

如果把 function 裡面的 alert 隱藏
只留下 function 外的 alert 就不行了

你把 function 外的那個 alert 包成另外一個 function
你直接放在外面會直接被執行 你onclick他才不理你
這樣你應該就知道了

document.onclick=function()
{
    var obj = event.srcElement; 
    if(obj.type == "button")
    { 
        if(obj.id == "fast"){
            btnValue = 1.2;
            alertMybtnValue(); //可以成功改變 btnValue = 1.2,每一次觸發按鈕,也都可以成功印出
        }else if(obj.id == "slow"){
            btnValue = 0.8;
            alertMybtnValue(); //可以成功改變 btnValue = 0.8,每一次觸發按鈕,也都可以成功印出
        }
    } 
}
function alertMybtnValue() {
    alert(btnValue); 
}
alertMybtnValue();
dragonH iT邦超人 5 級 ‧ 2020-03-03 17:20:46 檢舉

他有變只是你沒印出來

小斑 iT邦新手 3 級 ‧ 2020-03-03 17:28:19 檢舉

原來如此,謝謝大家,我了解了^^"

小斑 iT邦新手 3 級 ‧ 2020-03-03 17:45:16 檢舉

不好意思
我試了一下 listennn08 提供的方法
如果把原來 function 裡面的 alertMybtnValue(); 隱藏
好像還是不行在外面使用改變好的變數值...?

dragonH iT邦超人 5 級 ‧ 2020-03-03 17:48:13 檢舉

code

小魚 iT邦大師 1 級 ‧ 2020-03-03 18:02:54 檢舉

要不要考慮花點錢先學一下程式的邏輯...
剛開始學習沒有人教可能會比較難一點...

小斑

如果把原來 function 裡面的 alertMybtnValue(); 隱藏

document.onclick=function()
{
    var obj = event.srcElement; 
    if(obj.type == "button")
    { 
        if(obj.id == "fast"){
            btnValue = 1.2;
            // alertMybtnValue(); //可以成功改變 btnValue = 1.2,每一次觸發按鈕,也都可以成功印出
        }else if(obj.id == "slow"){
            btnValue = 0.8;
            // alertMybtnValue(); //可以成功改變 btnValue = 0.8,每一次觸發按鈕,也都可以成功印出
        }
    } 
}
function alertMybtnValue() {
    alert(btnValue); 
}
alertMybtnValue();

如果你是指這樣
代表你沒有呼叫 alertMybtnValue
所以不會執行 alert(btnValue);
但是 btnValue還是有被改變的

小斑 iT邦新手 3 級 ‧ 2020-03-04 10:43:56 檢舉

listennn08
謝謝
我了解了

0

你直接在程式後面加上這一段

setinterval(function(){
   console.log(btnValue);
},1000);

再將所有的alert拿掉。
開f12按console頁

你會發現有東西在跳。然後你去做操作看看。就知道參數有沒有動了。

題外話:
說真的,你的程式碼,慘不忍賭。只是我懶的再教學了。只告訴你,你的問題的判斷方式。
但我只帶入門,不告訴你原因。已經很多人跟你說了。不差我一個了。

dragonH iT邦超人 5 級 ‧ 2020-03-03 22:36:24 檢舉

setInterval

不然會問怎麼是 undefined

小斑 iT邦新手 3 級 ‧ 2020-03-04 10:45:09 檢舉

謝謝
我了解了

我要發表回答

立即登入回答