js函数,一个参数放的位置不同报错!

z752964360 2011-08-23 03:16:12

<html>
<head>
<style type="text/css">
div.line {
position:absolute;
z-index:2;
width:1px;
height:1px;
font-size:1px;
background-color:#0000FF;
overflow:hidden;
}
</style>

<script type="text/javascript">
var sX = 0;
var sY = 0;
var eX = 0;
var eY = 0;
var fline=false;
function mouseup(event)
{
if(fline) //fline为真,划直线
{
eX = event.clientX; //结束点
eY = event.clientY;
fline=false;
line(document.getElementById('container'));
}
else
{
fline=true;
sX = event.clientX; //开始点
sY = event.clientY;
}
}

function line(container) {
if (sX == eX) {
if (sY > eY) {
var tempY = sY;
sY = eY;
eY = tempY;
}
for (var k = sY; k < eY; k++) {
createPoint(container, sX, k);
}
}
// y = ax + b
var a = (sY - eY) / (sX - eX);
var b = sY - ((sY - eY) / (sX - eX)) * sX;
if (Math.abs(sX - eX) > Math.abs(sY - eY)) {
if (sX > eX) {
var tempX = eX;
eX = sX;
sX = tempX;
}
var left = container.style.left;
var top = container.style.top;
for (var i = sX; i <= eX; i++) {
createPoint(container, i, a * i + b);
}
}
else {
if (sY > eY) {
var tempY = sY;
sY = eY;
eY = tempY;
}
for (var j = sY; j <= eY; j++) {
createPoint(container, (j - b) / a, j);
}
}

}

function createPoint(container, x, y) {
var node = document.createElement('div');
node.className = 'line';
node.style.marginTop = y;
node.style.marginLeft = x;
container.appendChild(node);
}
</script>
</head>
<body onmouseup = mouseup(event)>
<div id="container" style="width:100%;height:100%;border:1px;margin-left:1px"></div>
</body>
</html>
...全文
162 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
z752964360 2011-08-24
  • 打赏
  • 举报
回复
难道不能这样赋值?
z752964360 2011-08-24
  • 打赏
  • 举报
回复
是,IE不兼容,chrome FireFox都好办!
ziyouren521125 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 z752964360 的回复:]

line():{
var container = document.getElementById('container')
……
}

不好意思,这样!
[/Quote]

没有过这个写法,应该是IE不兼容吧
z752964360 2011-08-23
  • 打赏
  • 举报
回复
在Friefox下是好使的!
z752964360 2011-08-23
  • 打赏
  • 举报
回复
不是,就是:var container = document.getElementById('container')
位置变了而已,原先作为函数的参数传递,现在直接在函数里取得!
wuwu8ku 2011-08-23
  • 打赏
  • 举报
回复
=.=
()是执行function的一种方式,这里就变成了先执行line,如果你line没定义,当然报错
你是不是想这样写
var fn = {
line:function(){}
}
z752964360 2011-08-23
  • 打赏
  • 举报
回复
line():{
var container = document.getElementById('container')
……
}

不好意思,这样!
wuwu8ku 2011-08-23
  • 打赏
  • 举报
回复
line():{
container = document.getElementById('container')
这是什么写法?
z752964360 2011-08-23
  • 打赏
  • 举报
回复
这个是用js画线的一断代码, 单击鼠标两次会在单击的两点之间画一条线。原理是在两点间画创造很多 div
考div的背景色画线


出一个奇怪问题:
line(document.getElementById('container'));
这个函数换成:
line():{
container = document.getElementById('container')
在IE下就报运行时错误:
行39错误:对象不支持此属性或者方法
FireFox 没问题!

87,917

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧