毕设中这段代码不理解

function gows()
{
document.location.href="allusers_add.jsp?id=<%=id%>";
}
function hsgxia2shxurxu(nstr,nwbk)
{
if (eval("form1."+nwbk).value.indexOf(nstr)>=0)
{
eval("form1."+nwbk).value=eval("form1."+nwbk).value.replace(nstr+";", "");
}
else
{
eval("form1."+nwbk).value=eval("form1."+nwbk).value+nstr+";";
}
}

这个代码n年的了吧,还用eval获取dom对象用

下面eval("form1." + xxxx)这种形式的代码是获取form1表单中的对应输入控件

nstr是要给控件删除或者添加内容,nwbk变量为form1中的控件名称。

这个代码类似复选框功能
简单示例如下

img


<form name="form1">
    喜好:<span onclick="hsgxia2shxurxu('足球','hobby')">足球</span><span onclick="hsgxia2shxurxu('篮球','hobby')">篮球</span><span onclick="hsgxia2shxurxu('乒乓球','hobby')">乒乓球</span><br />
    <input type="text" name="hobby" /><br />
    省份:<span onclick="hsgxia2shxurxu('广西','pro')">广西</span><span onclick="hsgxia2shxurxu('北京','pro')">北京</span><span onclick="hsgxia2shxurxu('上海','pro')">上海</span><br />
    <input type="text" name="pro" /><br />
</form>
<script>
    function gows() {
        document.location.href = "allusers_add.jsp?id=<%=id%>";//跳转到allusers_add.jsp这个页面,并get传递id参数,使用到了服务器端标签给id赋值
    }
    function hsgxia2shxurxu(nstr, nwbk) {
        if (eval("form1." + nwbk).value.indexOf(nstr) >= 0) {
            eval("form1." + nwbk).value = eval("form1." + nwbk).value.replace(nstr + ";", "");
        }
        else {
            eval("form1." + nwbk).value = eval("form1." + nwbk).value + nstr + ";";
        }
    }

</script>

img


有其他问题可以继续交流~

hsgxia2shxurxu===这个告诉我们,好好定义函数和变量名多么重要,否则谁能看得懂......
函数大概的功能是检查form1下的某个输入信息中是否有nstr表示的字符串,有的话就将其和其后的分号全部删掉。但有可能nstr表示的字符串后面没有分号,那就替换不掉。如果没有nstr表示的字符串,那么就给输入信息加上nstr表示的字符串,最后加一个分号
没写过JS,望文生义

hsgxia2shxurxu(nstr,nwbk)看这个就好像在看&*……%……&¥%……##@
如果eval("form1."+nwbk).value里有nstr
则删除其中的nstr+";",但是这里的eval("form1."+nwbk).value里如果没有nstr+";",则无事发生
如果没有nstr
则让其添加上nstr+";"

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632