0

我已经坚持了好几天了,所以我非常感谢你们可以提供的任何帮助。提前致谢!!这是我的问题:

我有一个选择列表:

<select id="bandCategories">
  <option>(Choose a category)</option>
  <option>Djent</option>
  <option>Brutal Death Metal</option>
  <option>Deathcore</option>
  <option>Hardcore</option>
  <option>Slam</option>
  <option>Verb the Noun</option>
</select>

以下是与它们相关的变量:

var bandCategories = document.getElementById("bandCategories");
var chooseCategoryStr = bandCategories.options[0].text;
var selectedCategory = bandCategories.options[bandCategories.selectedIndex].text;

我有一个函数bgChange(),我想在每次所选选项更改时运行,除非选择了默认的“(选择一个类别)”。我尝试了以下方法,但无济于事:

if(selectedCategory != chooseCategoryStr){
    selectedCategory.onchange = bgChange(selectedCategory);
};

帮助?再次感谢 :)

4

2 回答 2

2

尝试这个

  <select id="bandCategories" onchange="fun()">
  <option>(Choose a category)</option>
  <option>Djent</option>
  <option>Brutal Death Metal</option>
  <option>Deathcore</option>
  <option>Hardcore</option>
  <option>Slam</option>
  <option>Verb the Noun</option>
</select>
<script type="text/javascript">
<!--
    function fun()
    {
        var bandCategories = document.getElementById("bandCategories");
        var chooseCategoryStr = bandCategories.options[0].text;
        var selectedCategory = bandCategories.options[bandCategories.selectedIndex].text;
        if(selectedCategory == chooseCategoryStr){
                return;// no need to call your function bgChange
        }

        alert("bgChange(selectedCategory);"); //Call your function bgChange(selectedCategory);
    }
//-->
</script>

您甚至可以在函数中添加编辑而不添加新函数,以 在执行代码之前bgChange检查值不等于。chooseCategoryStr

于 2013-03-03T03:18:16.940 回答
0

以下 JavaScript 代码应该可以工作。无需更改您的 HTML。

var bandCategories = document.getElementById("bandCategories"),
    chooseCategoryStr = bandCategories.options[0].value;

bandCategories.onchange = function () {
    var selectedCategory = this.value;

    if (selectedCategory !== chooseCategoryStr) {
        bgChange(selectedCategory);
    }
};

这是一个具有预期结果的jsFiddle 。

于 2013-03-03T03:21:23.270 回答