【问题标题】:css background image displays when user clicks link problem用户单击链接问题时显示css背景图像
【发布时间】:2010-06-04 20:28:51
【问题描述】:

我更新了我的帖子。现在它说“链接未定义”“thisLink[link].scopeObject = new Image();”保持链接很重要,因为它是保存当前链接的 linkObj 的属性。由于它提供的循环能力,我使用 [] 作为属性而不是点表示法。

<script type="text/javascript">
window.onload = init;
var linkObj = new Object();
var listItems = new Object();

function init() {
for(var i=0; i < document.links.length; i++) {
    var link = document.links[i];
    linkObj[link] = link;
    setupClick(linkObj);
}
}

function setupClick(thisLink) {
thisLink[link].scopeObject = new Image();
thisLink[link].scopeObject.src = thisLink[link].id + "Img.png";
thisLink[link].onclick = rollClick; 
}

function rollClick() {
var list = document.getElementById("target").childNodes;
for(var i=0; i < list.length; i++) {
    if(list[i].nodeName == "LI") {
        var id = list[i] + i;
        listItems[id] = id;
    }
}
for(id in listItems){
        if(listItems[id].indexOf(this[link].id) > -1) {
        listItem[id].style.backgroundImage =  this[link].scopeObject.src; 
}
}
}
</script>


<ul id="target">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>   
</div>
<div id="mainContent">
<div id="navLinks">
<ul>
    <li><a href="#" id="0">Home</a></li>
    <li><a href="#" id="1">About</a></li>
    <li><a href="#" id="2">Products</a></li>
    <li><a href="#" id="3">Contact</a></li>
</ul>   

【问题讨论】:

  • 删除违规行前的var

标签: javascript css object onclick background-image


【解决方案1】:

我相信问题出在这一行:var linkObj[link] = document.links[i];。您需要删除该行前面的 var 命令。我认为您的 linkObj 已在您的代码中的其他位置声明,并且您正试图在其中插入一个新值。如果没有,请发布更完整的代码,我可以进一步研究。

-- 编辑如下--

然后我的声明“我假设您在其他地方定义了 linkObj。”是不正确的。您可能需要改用这个:var linkObj = document.links[i];。 var 命令创建变量。创建它们后,分配不需要 var 命令。您是要保留一个引用所有链接的对象以供以后使用,还是只需要使用每个链接一次?如果是前者,则在您的 init() 函数之外添加以下行:var linkObj = {};

-- 更多编辑--

圣牛。我不是 100% 确定你的最终目标是什么,但我认为你应该首先使用这样的东西:

<script type="text/javascript">
  window.onload = init;

  function init() {
    for (var i = 0; i < document.links.length; ++i) {
      setupClick(document.links[i]);
    }
  }

  function setupClick(thisLink) {
    thisLink.scopeObject = new Image();
    thisLink.scopeObject.src = thisLink[link].id + "Img.png";
    thisLink.onclick = rollClick; 
  }
</script>

这将使您至少可以将属性分配给链接,因为它们存在于 document.links 数组中。 rollClick 函数所期望的行为对我来说有点模糊,但至少使用它开始你正在为页面中的链接分配属性。

【讨论】:

  • 如果我删除它,它说 linkObj 没有定义。
猜你喜欢
  • 1970-01-01
  • 2012-12-11
  • 2019-02-27
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多