Javascript 基本JS+;WebDev帮助

Javascript 基本JS+;WebDev帮助,javascript,dom,Javascript,Dom,我有个小问题。我有七个。从左到右计数 <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

我有个小问题。我有七个
。从左到右计数

<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;
    }
}
函数evalonsubmit(ID,n)
{
var ElementID=document.getElementById(ID);
if(ElementID.value=-1){

对于(var i=n+1;i不太确定您想要什么,但它可能应该是:

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

else
分支中也是如此



除此之外,我会给你的变量起更多有意义的名字。例如,
ElementID
让你假设值是一个ID。但它不是。它是一个DOM元素。对于
newValue

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

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;
    }
}
函数evalonsubmit(ID,n)
{
var ElementID=document.getElementById(ID);
if(ElementID.value==-1){

对于(var i=n+1;i您在对
document.getElementById
的几次调用中丢失了参数,禁用
的属性是
禁用
,而不是
禁用
。您还可以在需要
=
的地方使用
=/code>

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;
    }
}
函数evalonsubmit(ID,n)
{
var ElementID=document.getElementById(ID);
if(ElementID.value==-1){
对于(var i=n+1;i为什么不这样做:

HTML: 这样就不需要
元素上的
id
s,因为可以使用
.nextSibling
抓取以下元素。
nextElement()
函数用于避免抓取文本节点

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;
    }
}
<div class="wrapper">
    <select onchange="evalonsubmit(this);" />

    <select onchange="evalonsubmit(this);" />
    <select onchange="evalonsubmit(this);" />
</div>
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;
}