0

我正在尝试做一个使用 javascript 更改页面内容的示例。假设我有一个页面:

<html>
<head>
</head>
<body>
<select id="a96780" multiple="multiple" name="a96780" size="3" value="deneme">
<option selected="selected" value="#ANY">ALL</option>
<option value="1111294">Ex1</option>
<option value="1111292">Ex2</option>
<option value="1111290">Ex3</option>
</select>
</body>
</html>

我希望能够在页面加载时关闭所有选项 Ex1、Ex2、Ex3(将它们的类型设置为隐藏或通过其他方式)。为了实现这一点,我按照网上的说明进行操作,但没有这样做:

<script type="text/javascript">

function myFunction()
{
var selectBox = document.getElementById("a96780");
alert("smt");
alert(selectBox.name);
}

myFunction();

</script>

在上面的脚本中,我试图打印出元素的名称以确认我确实拥有它。然而,最后一行从不打印。我如何确认我已将元素初始化为 selectBox 以及我应该如何从那里开始。选项值是否足以参考以下项目:“Ex1、Ex2 和 Ex3”?

编辑1:我绝对没有指向html的链接,我不能修改body标签,也不能放置任何可以启动myFunction的按钮,因此无论我做什么,我只能通过js来做。除此之外,如果你能引导我了解我应该如何进行,那也很棒。例如,我可以从它们的值中引用选项项目吗?

4

5 回答 5

1

我的解决方案是:

<html>
<head>
<script type="text/javascript">

function initialTypeCorrection()
{
    var selectBox = document.getElementById("a96780");
    if(selectBox != null)
    {
            var options = selectBox.getElementsByTagName("option");
            for (var i = 0; i < options.length; i ++) 
            {   
                // Alternative 1
                if(options[i].value=="1111294" || options[i].value=="1111292" || options[i].value=="1111290")
                {
                    options[i].disabled = "true"; 
                    options[i].text = ""; 

                }
            }
    }

}
window.onload = initialTypeCorrection;

</script>
</head>
<body>
<select id="a96780" multiple="multiple" name="a96780" size="4">
<option selected="selected" value="#ANY">all</option>
<option value="1111294">a1</option>
<option value="1111292">a2</option>
<option value="1111290">a3</option>
</select>
</body>
</html>
于 2012-08-17T11:48:54.873 回答
0

这是一个工作示例:(您的代码)

http://jsfiddle.net/44fQX/

有什么问题就问吧:)

于 2012-08-07T08:02:26.053 回答
0

关于您问题的这一部分:“我希望能够在页面加载时关闭所有选项 Ex1、Ex2、Ex3(将它们的类型设置为隐藏或通过其他方式)”

函数 closeAllOptions() {
    var slc = document.getElementById("a96780"), i, opt;
    for (i=0; opt=slc[i]; i++) {
        if (opt.value!="#ANY") {
            opt.disabled=真;
            // 更新
            opt.style.display="none";
        }
    }            
}
函数 relaseAllOptions() {
    var slc = document.getElementById("a96780"), i, opt;
    for (i=0; opt=slc[i]; i++) {
        opt.disabled=false;
        // 更新
        opt.style.display="";
    }            
}

测试:http: //jsfiddle.net/44fQX/1/

更新 http://jsfiddle.net/44fQX/3/

于 2012-08-07T08:45:51.810 回答
0

你可能想试试

<body onload="myFunction()">

而不是在脚本标签中调用它,因为在 javascript 被初始化时,body 标签中的东西没有被初始化。

于 2012-08-07T07:59:34.120 回答
0

您需要等到 DOM 完全加载。这意味着 HTML 已被浏览器理解和组织。如果您在此之前执行 javascript,则元素将不存在,因此不会被操纵或打印。

等待 DOM 加载的一种方法是将函数调用放入onloadbody 标记中......

<body onload="myFunction();">
于 2012-08-07T08:00:17.590 回答