JS函数从未被调用,但其他人却被调用

时间:2018-10-02 21:23:41

标签: javascript

我在JSP文件上有以下选择:

            <select id="order-select">
                <option value="Lowest price" onclick="sortLowestPrice()"><spring:message code="list.lowest"/></option>
                <option value="Highest price" onclick="sortHighestPrice()"><spring:message code="list.highest"/></option>
            </select>   

结果,我再也无法调用sortLowestPrice()或sortHighestPrice()了。 我知道我的JS可以工作,因为它上的其他功能可以在同一JSP中调用,并且可以正常工作。

以下是其中一项功能:

function sortHighestPrice() {
    console.log("im here");
  var publications = document.querySelectorAll(".polaroid-property");
  var sort = [];
  var father = document.getElementById("publications");
  var i, j, k;
  var max = null;
  while (father.firstChild) {
        father.removeChild(father.firstChild);
  }
  for(i = 0; i < publications.length; i++){
    max = null;
    for(j = 0; j < publications.length; j++){
        if(publications[j].getAttribute("visited") != "true"){
            var price = parseInt(publications[j].getElementsByClassName("price-tag")[0].innerHTML.substring(1));
            if(price > max || max == null){
                max = price;
                k = j;
            }
        }
    }
    sort.push(k);
    publications[k].setAttribute("visited",true);
  }
  for(i = 0; i < sort.length; i++){
    publications[i].setAttribute("visited",false);
    father.appendChild(publications[sort[i]]);
  }
}

我从没在浏览器日志中看到“我在这里”。

3 个答案:

答案 0 :(得分:2)

您可以侦听父项<option>标记上的更改事件,而不是尝试监听每个<select>上的点击事件,并从内部的DOM事件对象中检索所选选项的值。您的功能。见下文:

function sortHighestPrice(e) {
    var optionValue = e.target.value;
}
<select onchange="sortHighestPrice(event)" id="order-select">
  <option value="Lowest price" onclick="sortLowestPrice()">
    <spring:message code="list.lowest"/>
    option1
  </option>
  <option value="Highest price"         onclick="sortHighestPrice()">
    <spring:message code="list.highest"/>
    option2
  </option>
</select>  

希望这会有所帮助!

答案 1 :(得分:1)

类似您的浏览器的声音不支持onclick在选项元素上。尝试使用其他元素类型,例如按钮(即保证onclick支持的某种元素)

这是我在chrome上遇到的问题。

答案 2 :(得分:-1)

您可以在w3schools here上看到option标签不支持onSelect()onClick()

关于this Stackoverflow问题的更多详细信息概述了一种替代方法,如我上面的评论所述。