Re: [問題] 重複使用Javascript

看板Ajax作者 (rob)時間14年前 (2011/09/24 19:09), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串6/6 (看更多)
回復kerash大 這是另外一個突然跑出的問題 就是 原先用 ppAry=Box.split(" ").map(function(value){ return parseInt(value,10)}); 已經將ppAry的"字串"轉成"數字"可運算 但是現在用在按鈕button然後運行init()兩次 當按第二次時也就是運行第三次和第四次init()後 又會變回字串???我用alert看到 比如100+100 應該是200他又變成100100 若用* /的或+-就變成錯誤的運算值 在我的陣列中有四個參數 其中ppAry[0]不會出錯 其他的ppAry[1]ppAry[2]ppAry[3] 好像都會變成字串回去 完整碼如下 <body> <form> <input type="button" value="4" onClick="javascript:init('mainlayer');fgo();init('rect');fgo();"/> </form> //放入一個按鈕 執行兩次init和fgo函數// <script type="text/javascript"> var svgdoc=null; var svgRect; var ppAry = new Array(); var box; function init(domId){ var object=document.getElementById(domId); svgdoc=object.getSVGDocument(); svgRect=svgdoc.getElementById("mainviews"); Box=svgRect.getAttribute("Box");// ppAry=Box.split(" ").map(function(value){ return parseInt(value,10)}); //將得到的Box四個參數分開並且轉成數字 } function fgo() { svgRect.setAttribute("Box", ppAry[0]+" "+ppAry[1]+" "+ppAry[2]+100+" "+ppAry[3]); } </script> </body> ※ 引述《robinnpca (rob)》之銘言: : ppAry=Box.split(" ").map(function(value){ : return parseInt(value,10)}); : //畫一串字串成整數// : 然後在 : function up() : { : ppAry[2]=ppAry[2]*2; : ppAry[3]=ppAry[3]*2; : svgRect.setAttribute("Box", ppAry.join( )); : } : 卻會跑出NaN植錯誤>____< : 後來改用 : function up() : { : svgRect.setAttribute("Box", ppAry[0]+" "+ppAry[1]+" "+ppAry[2]*2+" : "+ppAry[3]*2); : } : 就成功了.... : 不太知道為什麼ppAry.join()會因為連續執行兩次init函數而突然失效... : 有人可以告訴我嗎?感謝! : : 跑不起來勒?? : : 我前面還有個 : : <body onLoad="init()"> : : 看來應該會影響到... : : 我看了下面的 不是很懂~再次請教 : : <form> : : <input type="button" value="up" : : onClick="javascript:init('layer1');up(); : : init('mlayer2';up()"/> : : </form> : : //一個按鈕按一次想執行兩次script但是裡面的id不同// : : <script type="text/javascript"> : : var svgdoc=null; : : var y; : : var x; : : function init(domId){ : : var object=document.getElementById(domId); : : if(object && object.contentDocument) : : svgdoc=object.contentDocument; : : else : : svgdoc=object.getSVGDocument(); : : //...以下省略// : : function up() : : { : : svgRect.setAttribute("y",--y); : : } : : </script> : : 上面這樣試一下看看 : : 但是code不夠"漂亮",你再改改看 : : 用一個function就可以了 -- 寧願天空是藍色~ 也不願心情是藍的! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.176.160.109 ※ 編輯: robinnpca 來自: 180.176.160.109 (09/24 19:10)

09/24 19:27, , 1F
+100改成-(-100)看看
09/24 19:27, 1F

09/24 21:15, , 2F
pAry[2]+100 改成 (Number(pAry[2])+100)
09/24 21:15, 2F

09/24 21:59, , 3F
用Number成功了~但是Number(ppAry.join())還是會錯誤
09/24 21:59, 3F

09/24 21:59, , 4F
還是變成字串?
09/24 21:59, 4F

09/24 21:59, , 5F
...抱歉再問一下你的 mainlayer , rect 那些的 code ...
09/24 21:59, 5F

09/24 21:59, , 6F
但是一個個Number(ppAry[2]+100)是成功變數字了
09/24 21:59, 6F

09/24 22:00, , 7F
因為我要直接測試,那些語法我沒用過,我需要完整一點,sor
09/24 22:00, 7F

09/24 22:27, , 8F
成功了感謝No大 ppAry.join(' ')少個空白
09/24 22:27, 8F
※ 編輯: robinnpca 來自: 180.176.160.109 (09/25 08:58)
文章代碼(AID): #1EVRg2D3 (Ajax)
文章代碼(AID): #1EVRg2D3 (Ajax)