qq_40805263 2018-10-26 12:52 采纳率: 41.7%
浏览 509

javascript的一点困惑

html部分
<body>
  <h1>Web Design</h1>
  <p>These are the things you should know.</p>
  <ol id="linklist">
    <li>
      <a href="structure.html">Structure</a>
    </li>
    <li>
      <a href="presentation.html">Presentation</a>
    </li>
    <li>
      <a href="behavior.html">Behavior</a>
    </li>
  </ol>
</body>
js部分
function prepareSlideshow() {
  var slideshow = document.createElement("div");
  slideshow.setAttribute("id","slideshow");
  var preview = document.createElement("img");
  preview.setAttribute("src","topics.gif");
  preview.setAttribute("alt","building blocks of web design");
  preview.setAttribute("id","preview");
  slideshow.appendChild(preview);
  var list = document.getElementById("linklist");
  insertAfter(slideshow,list);//一个将slideshow放在list的方法
// Get all the links in the list
  var links = list.getElementsByTagName("a");
// Attach the animation behavior to the mouseover event
  links[0].onmouseover = function() {
    moveElement("preview",-100,0,10);
  }
  links[1].onmouseover = function() {
    moveElement("preview",-200,0,10);
  }
  links[2].onmouseover = function() {
    moveElement("preview",-300,0,10);
  }
}
addLoadEvent(prepareSlideshow);运行函数的方法

 function moveElement(elementID,final_x,final_y,interval) {
  var elem = document.getElementById(elementID);
  if (elem.movement) {
    clearTimeout(elem.movement);
  }
  if (!elem.style.left) {
    elem.style.left = "0px";
  }
  if (!elem.style.top) {
    elem.style.top = "0px";
  }
  var xpos = parseInt(elem.style.left);
  var ypos = parseInt(elem.style.top);

  if (xpos < final_x) {
    var dist = Math.ceil((final_x - xpos)/10);
    xpos = xpos + dist;
  }
  if (xpos > final_x) {
    var dist = Math.ceil((xpos - final_x)/10);
    xpos = xpos - dist;
  }
  if (ypos < final_y) {
    var dist = Math.ceil((final_y - ypos)/10);
    ypos = ypos + dist;
  }
  if (ypos > final_y) {
    var dist = Math.ceil((ypos - final_y)/10);
    ypos = ypos - dist;
  }
  elem.style.left = xpos + "px";
  elem.style.top = ypos + "px";
  var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
  elem.movement = setTimeout(repeat,interval);

这是javascript-dom编程艺术第十章的代码
我有三个地方不明白
第一、为什么不能删去 if (!elem.style.left) {
elem.style.left = "0px";
}
if (!elem.style.top) {
_ elem.style.top = "0px";_
}中的 if (!elem.style.left) {} 和 if (!elem.style.top) { },删去后不知为什么图片就不会
平移了。
第二、 为什么删去_if (elem.movement) {
clearTimeout(elem.movement);_
_ }_这个代码后图片也不会平移了,
第三、为什么 var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
我改成elem.movement = setTimeout moveElement(elementID,final_x,final_y,interval),interval);
后图片平移的时间消失了,没有图片平移的动画了

  • 写回答

1条回答 默认 最新

  • jacksuperlan 2018-10-27 04:00
    关注

    第一、为什么不能删去 if (!elem.style.left) {
    elem.style.left = "0px";
    } 一看就知道是位置复位功能,这个元素到达最左边的位置。
    吃饭啦,后面的自己看一下函数代码的定义作用才可以解答。

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置