选择一个div并取消选择另一个div

时间:2014-09-18 06:55:54

标签: javascript html dojo

使用div's。我正在进行更改,如果选择了一个div,它应该取消选择另一个div。

定义的div's位于ul li

与每个li一样,有一个div为classname,称为inonset。现在已经选择的div具有inonset isactive类。

我在每个onclick添加一个<div class="inonset" onclick="selectme(divid)">函数来选择它并取消选择其他函数,但另一个将如何取消,我迷失了

Here is the fiddle

还没有添加javascript代码,但是从代码中,它将清除我想要做的事情。

你最初会看到一个被选中而其他人在那里,我只是想选择任何一个并取消选择前一个,希望我的问题有意义

最糟糕的事情:我无法使用Jquery,仅Dojo或普通Javascript

更新#1

<div class="optionsBox" align="left" id="Invoicing" onclick="chooseDiv(this);">
function chooseDiv(oObj){
    var d = document.getElementsByClassName("ul li div");
    alert(d.className);

它给了我undefined而不是循环遍历类

div正在使用类似

的类

iv class =&#34; headerSelected isactive&#34;&gt;

需要从之前选定的isactive中移除div并添加到新选择的Div

2 个答案:

答案 0 :(得分:0)

首先,您需要更改点击事件:

onclick="selectme(this)"

然后在功能:

function selectme(oObj){
  var d = document.getElementById("ul li div");
  d.removeAttribute("class");
  oObj.className = oObj.className + " otherclass";
}

它应该可以正常工作

答案 1 :(得分:0)

我不确定答案是否仍然需要。但是,发布我的做法。

function removeClass(className) {
    // convert the result to an Array object
    var els = Array.prototype.slice.call(
        document.getElementsByClassName(className)
    );
    for (var i = 0, l = els.length; i < l; i++) {
        var el = els[i];
        el.className = el.className.replace(
            new RegExp('(^|\\s+)' + className + '(\\s+|$)', 'g'),
            '$1'
        );
    }
}

var elements = document.getElementsByClassName("inoneset");
for (var i = 0; i < elements.length; i++) {
    (function(i) {
        elements[i].onclick = function() {
            removeClass("isactive");
            //this.setAttribute("class", this.getAttribute("class") + " isactive");
            var headerElem = this.getElementsByClassName("headerSelected")[0];
            headerElem.setAttribute("class", headerElem.getAttribute("class") + " isactive");
            var addressElem = this.getElementsByClassName("selDelAddress")[0];
            addressElem.setAttribute("class", addressElem.getAttribute("class") + " isactive");
            var footerElem = this.getElementsByClassName("footerSelected")[0];
            footerElem.setAttribute("class", footerElem.getAttribute("class") + " isactive");
        };
    })(i);
}

小提琴 - http://jsfiddle.net/38nv5rft/18/

<强>推理

如您所见,有一个删除类函数,它从文档中的元素中删除该类。可以根据要求更新它。

然后主要逻辑获取所有元素,迭代它们并绑定click函数。

在click函数中,我们从每个元素中删除inActive类,然后为当前块删除inActive类。请注意,根据小提琴,我没有找到更新inoneset元素的类,因此,注释掉了代码。

重点

点击事件气泡,因此,点击带有showDelete的元素和showDialog点击功能会将事件冒泡到inoneset的点击事件,即也会触发inoneset的点击处理程序。为了阻止事件传播到它,请在showDelete和showDialog函数中使用event.stopPropogation()。