作者robinnpca (rob)
看板Ajax
标题Re: [问题] 重复使用Javascript
时间Sat Sep 24 19:09:52 2011
回复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)
1F:推 s25g5d4:+100改成-(-100)看看 09/24 19:27
2F:推 Numino:pAry[2]+100 改成 (Number(pAry[2])+100) 09/24 21:15
3F:→ robinnpca:用Number成功了~但是Number(ppAry.join())还是会错误 09/24 21:59
4F:→ robinnpca:还是变成字串? 09/24 21:59
5F:→ kerash:...抱歉再问一下你的 mainlayer , rect 那些的 code ... 09/24 21:59
6F:→ robinnpca:但是一个个Number(ppAry[2]+100)是成功变数字了 09/24 21:59
7F:→ kerash:因为我要直接测试,那些语法我没用过,我需要完整一点,sor 09/24 22:00
8F:→ robinnpca:成功了感谢No大 ppAry.join(' ')少个空白 09/24 22:27
※ 编辑: robinnpca 来自: 180.176.160.109 (09/25 08:58)