现在的问题是,单位是ie帮我转的(由px到pt)
因为我对v:polyline对象的points的设置就是用的px
请留意:
<v:polyline units="px" id="pl" filled="false"
style="position:absolute;top:0px;left:0px"
points="10,10 20,50">"10,10 20,50"就是的单位就是px单位。然后当我把它自己的东西赋给自己的时候(把points的值赋给它自己的时候),ie就帮我把他们转换了,而且那些值是完全不对应的!(经验证,它们的值都加倍了,所以,polyline对象的位置才会不停的变)
因为我对v:polyline对象的points的设置就是用的px
请留意:
<v:polyline units="px" id="pl" filled="false"
style="position:absolute;top:0px;left:0px"
points="10,10 20,50">"10,10 20,50"就是的单位就是px单位。然后当我把它自己的东西赋给自己的时候(把points的值赋给它自己的时候),ie就帮我把他们转换了,而且那些值是完全不对应的!(经验证,它们的值都加倍了,所以,polyline对象的位置才会不停的变)
解决方案 »
- 在某JSP文件中,输出结果是什么?
- JavaScript得到html标记值问题????????
- firefox 下不支持document.readyState ?
- 用脚本调用另一个页面的脚本的问题(A页面脚本调用 B页面脚本)
- jscript是什么
- 如何计算这种同一数量和同一价格所产生的总价赋到同一名称的文本框里
- 黄方荣(meizz·梅花雪)的树形目录的图片相对路径怎么设置?
- Javascript中,Events对象是属于JS内置对象还是HTML DOM的对象?
- 动态生成的下拉菜单,拉长页面问题,求解
- 打开一个网页的时候怎样才可以随机播放媒体文件
- 如何在text5和text6中输入完数字后,在text7中自动显示数字(前二者的乘积)
- 请教关于createElement的问题
你每点一次input相当于重绘一次该线,因为原来的位置还被现有的poly占据所以absolute的该poly就下移了,不知道你名每明白
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<STYLE>
v\:* { Behavior: url(#default#VML) }
</STYLE>
</head>
<body onclick="alert(document.all.pl.points.value);">
<div><v:polyline units="px" id="pl" filled="false"
style="position:relative;top:0px;left:0px"
points="10,10 20,50"> </polyline> </div>
<input onClick="document.all.pl.points.value=document.all.pl.points.value;" value="button" type="button">
</body>
</html>
不知道你有没有发现alert出来的数据,虽然线的位置没有变但是points的那些数据还是在不停的加倍,能解释一下吗?
谢谢。(其实我觉得你的说法应该不对,因为这里边的代码是我原来的代码的简单化,我原来的代码里边,取得数据和重画是在不同的页面里边的,意思是:先取得a页面的polyline的points数据,然后在b页面画出来,所以就不存在你说的:“原来的位置还被现有的poly占据”,所以我觉得问题并不是象你说的那样。)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<STYLE>
v\:* { Behavior: url(#default#VML) }
</STYLE>
</head>
<body onclick="alert(document.all.pl.points.value);">
<div><v:polyline id="pl" filled="false"
style="position:relative;top:0px;left:0px"
points="10,10 20,50 15,3"> </polyline> </div>
<input onClick="document.all.pl.points.value=x;" value="button" type="button">
</body>
</html>
<script>
var x=document.all.pl.points.value
</script>
<html xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<STYLE>
v\:* { Behavior: url(#default#VML) }
</STYLE>
</head>
<body onclick="alert(document.all.pl.points.value);">
<v:polyline units="px" id="pl" filled="false" style="position:absolute;top:0px;left:0px" points="100,100 20,50"> </polyline>
<input onClick="document.all.pl.points.value=document.all.pl.points.value;" value="button" type="button">
</body>
</html>
vml的许多元素在如果是createElement出来的话,没appendChild之前,他的points之类的属性是不可以添加的,这个可能也是因为这个原因,可能要从dom的角度考虑这个问题吧如果你想实现功能,可以变通一下~!~
在对线进行px单位的赋值前使用该规则转换原坐标为px单位的坐标
但是如果这样的话
转换出来的值是不准确的啊。
还有就是points有非常多个值的,如果一个个转比较浪费时间,效率会很低
<title>vml</title>
<STYLE>
v\:* { Behavior: url(#default#VML) }
</STYLE>
</head>
<SCRIPT LANGUAGE="JavaScript">
<!--
function Equal(oldobj,newobj)
{
var oArr=oldobj.value.split(",")
var nArr = newobj.value.split(",")
for(var i=0;i<nArr.length;i++)
oArr[i]=nArr[i]
var re= oArr.join(",")
return re;
}
//-->
</SCRIPT>
<body onclick="alert(document.all.pl.points.value)">
<v:polyline units="pt" id="pl" filled="false"
style="position:absolute;top:0px;left:0px"
points="10,10,20,50"> </polyline>
<input onClick="Equal(document.all.pl.points,document.all.pl.points);" value="button" type="button">
</body>
</html>
对这个结构做赋值操作时ie的脚本解释器进行了一次操作符重载,问题应该是发生在=操作的时候,我个人想法:)
Equal(document.all.pl.points,document.all.pl.points);是完全没有起到作用的
不信你可以试试:Equal(document.all.pl.points,"10,20 30,40 50,60");当然函数也要做点小改动就是去掉newobj后边的alue.结果告诉我们你的函数是完全没有达到修改points.value的值的要求的。
其实我也想让步的,但是我刚刚发现,ie不但会把px自动的转换成pt,而且还会自动的转换成in!
而且我不知道它什么时候是in什么时候是pt,真是晕死了!ms的ie真聪明啊!
不好意思,我不知道document.all.pl.points的结构是怎么样的
我以为是固定的"x,x,x,x"的结构
polyline对象的points.value与普通变量之间只能进行最多一次值的交换,否则原来的值会不停的加倍。