基本的JS + WebDev帮助

时间:2010-07-20 10:18:52

标签: javascript dom

我有点问题。我有七个<select>个。从左到右计数。

<select id="sel_1" onchange="evalonsubmit('sel_1',1);">
<select id="sel_2" onchange="evalonsubmit('sel_2',2);">

以这种方式从1到7。

逻辑很简单。点击检查,如果该值为-1,则禁用右侧的所有内容并将其设置为-1。如果不是-1则启用所点击的权利(+1可以说)

这就是代码:

function evalonsubmit(ID, n)
{
    var ElementID = document.getElementById(ID);
    if(ElementID.value = -1) {
        for (var i = n + 1; i <= 7; i++){
            var newID = "sel_" + i;
            var newValue = document.getElementById();
            newValue.disable = true;
            newValue.value = -1
        }
    } else {
        var newID = "sel_"+(n+1)
        var newValue = document.getElementById();
        newValue.disable = false;
    }
}

有人可以帮助JS黑客吗?

4 个答案:

答案 0 :(得分:1)

不太确定你想要什么,但可能应该是:

if (ElementID.value == -1){
//                   ^---  two = , otherwise you assign the value

var newID = "sel_" + i;
var newValue = document.getElementById(newID);
//                     pass parameter ---^

else分支相同。


除此之外,我会给你的变量更有意义的名字。例如。 ElementID允许您假设该值是ID。但事实并非如此。它是一个DOM元素。与newValue相同。

答案 1 :(得分:1)

我刚刚修复了代码中的一些简单错误。

function evalonsubmit(ID, n)
{
    var ElementID = document.getElementById(ID);
    if (ElementID.value == -1){
        for (var i=n+1; i <= 7; i++){
            var newID = "sel_" + i;
            var newValue = document.getElementById(newID);
            newValue.disable = true;
            newValue.value = -1
        }
    } else {
        var newID = "sel_"+(n+1)
        var newValue = document.getElementById(newID);
        newValue.disable = false;
    }
}

答案 2 :(得分:0)

您在对document.getElementById的几次调用中缺少参数,而禁用<select>的属性为disabled,而不是disable。您还需要= ==

function evalonsubmit(ID, n)
{
    var ElementID = document.getElementById(ID);
    if (ElementID.value == -1){
        for (var i=n+1; i <= 7; i++){
            var newID = "sel_" + i;
            var newValue = document.getElementById(newID);
            newValue.disabled = true;
            newValue.value = -1;
        }
    } else {
        var newID = "sel_"+(n+1);
        var newValue = document.getElementById(newID);
        newValue.disabled = false;
    }
}

答案 3 :(得分:0)

为什么不这样做:

HTML:

<div class="wrapper">
    <select onchange="evalonsubmit(this);" />

    <select onchange="evalonsubmit(this);" />
    <select onchange="evalonsubmit(this);" />
</div>

JS:

function nextElement(current)
{
    do
        current = current.nextSibling;
    while (current && current.nodeType != 1);

    return current;
}

function evalonsubmit(elem)
{
    if(elem.value == -1)
        while(elem = nextElement(elem)) {
            elem.disabled = true;
            elem.value = -1
        }
    else if(elem = nextElement(elem))
        elem.disabled = false;
}

这消除了对id元素<select> s的需求,因为可以使用.nextSibling抓取以下元素。 nextElement()函数是为了避免抓取文本节点。

相关问题