0

我的 java 脚本中有全局变量。现在每次调用内部函数时我都会得到不同的值。我需要创建一个选项标签,其中包含属性中的选定值和一个基于变量没有选定值的选项标签。我想这更令人困惑,让我举个例子。

var a1 = "a1c" // default value but may change

if(a1 == "all")
{
    var allstatusdefault = '<option value="all" selected="selected">All</option>';
}
else
{
    var allstatusdefault = '<option value="all" >All</option>';
}

if(a1 == "a1b")
{
    var allstatusdefault1 = '<option value="a1b" selected="selected">a1b</option>';
}
else
{
    var allstatusdefault1 = '<option value="a1b" >a1b</option>';
}

if(a1 == "a1bc")
{
    var allstatusdefault2 = '<option value="a1bc" selected="selected">a1bc</option>';
}
else
{
    var allstatusdefault2 = '<option value="a1bc" >a1bc</option>';
}

这只是示例,但我必须生成许多具有不同值的选项标签。如果..任何人有其他想法,我不想写信给很多人?

4

5 回答 5

3

提取公共代码,我在这里看到很多重复。

var a1 = "a1c";

function buildOption(id) {
    var selected = (a1 == id? ' selected="selected"' : '');
    return '<option value="' + id + '"' + selected + '>' + id + '</option>';
}

var allstatusdefault =  buildOption('all');
var allstatusdefault1 = buildOption('a1b');
var allstatusdefault2 = buildOption('a1bc');
于 2012-08-24T19:20:16.213 回答
2

从我这里可以推断出你应该做什么

var default1 = '<option value="'+a1+'" selected="selected">'+a1+'</option>';
var default2 = '<option value="'+a2+'" selected="selected">'+a2+'</option>';

由于a1在字符串中重用了的值,不如直接设置它而不是使用多个 if 语句。

注意:当你有很多 if 语句时,这是使用 switch 语句的绝佳机会

于 2012-08-24T19:18:37.710 回答
1

对于初学者,了解switch...case. 在您的情况下,您似乎可以通过将变量连接到字符串来简单地使用变量本身来形成字符串。

于 2012-08-24T19:18:18.043 回答
0
  var a1 = "a1bc" // default value but may change
    switch(a1)
        {
        case "all" : allstatusdefault = '<option value="all" selected="selected">All</option>';break;
        case "a1b" : allstatusdefault = '<option value="a1b" selected="selected">a1b</option>'; break;
        case "a1bc" :  allstatusdefault = '<option value="a1bc" selected="selected">a1bc</option>'; break;
        default :  allstatusdefault = '<option value="all" >All</option>';break;
        }
    window.alert(allstatusdefault); ​
于 2012-08-24T19:21:47.307 回答
-1

我认为从您编写代码的方式来看,您可以使用 jQuery 来完成。首先创建整个 HTML,所有选项值都使用 jQuery 对象,如下所示:

var $optionHTML = $('<option value=""> Blahblah </option>'); 现在你可以将所有 jquery 函数应用到这个人身上。所以你附加一个这样的新选项。

$optionHTML.append('<option>...</option>')

当您完成所有选项元素时,使用 jquery 选择器方法查找具有值属性匹配的选项的元素,a1c然后添加属性selected,然后您就完成了。

如果您需要一些初学者代码,请告诉我。

谢谢。

编辑 :

这是答案

<html>
<head>
    <script type = "text/javascript" src= "http://code.jquery.com/jquery-1.8.0.min.js"></script>
    <script type = "text/javascript">
        $(document).ready (function () {
            var value = "test 2";
            $select = $("<select></select>");
            $optionHTML1 = $('<option value="test 1">Test 1</option>');
            $optionHTML2 = $('<option value="test 2">Test 2</option>');
            $optionHTML1.appendTo($select); 
            $optionHTML2.appendTo($select);
            $select.find("[value='test 2']").attr('selected','selected');
            alert($select.html());  
            $("div").append($select);
        });
    </script>
    <style type = "text/css">
    </style>
</head>
<body>
    <div>
    </div>
</body>

于 2012-08-24T19:22:13.607 回答