使用下拉菜单在javascript中生成网址

时间:2017-08-07 19:17:17

标签: javascript jquery html css

如何构建名为countryUrl()的函数,从id标记中获取参数<li>

<ul>
  <li onclick="countryUrl(this.id)" id="20" value="Benin">
    <a href="#">Benin</a>
  </li>
</ul>

并将其连接到/frame/theme/ 在ajax电话中:

$.ajax({
        type:"GET",
        url :"/frame/theme1/"+myUrl,
        dataType: 'json',
        success:  function(data) { ...

会是这样的:

function countryUrl(id){
   return "/frame/theme/"+this.id; 
}

然后如何将其传递到url:字段?

2 个答案:

答案 0 :(得分:0)

你可以用数据(“id”)代替id。 然后你将使用counrtyUrl(this.data('id')。 在$ .ajax调用中使用函数中的参数。

答案 1 :(得分:0)

首先,不要使用内联HTML事件属性,例如onclick。有一个variety of reasons why。相反,将JavaScript与HTML分开并遵循现代标准,如下所示。

接下来,虽然将id作为一个数字是合法的,但这不是一个好主意(特别是对于向后兼容性)。

此外,li元素没有value属性。请使用 data-* 属性将自定义值存储在HTML元素中。

最后,您不需要列表中的超链接来使列表项可以点击。

您需要做的就是设置li元素以进行click事件回调,并且该回调从已点击的li中提取数据并将其用作您需要。

&#13;
&#13;
// Get reference to the bullet:
var li = document.getElementById("lstBenin");

// Set up bullet to be clickable:
li.addEventListener("click", countryURL);

// function that is called when bullet is clicked
function countryURL(){

  // Create new URL based on the "data-value2" attribute
  // of the element that was clicked:
  var newURL = "/frame/theme1/" + this.dataset.value2;
  console.log(newURL);  // Test

  // Make AJAX call using new URL
  $.ajax({
          type:"GET",
          url :newURL,
          dataType: 'json',
          success:  function(data) { 
          }
        });

}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li id="lstBenin" data-value1="Benin" data-value2="20">Benin</li>
</ul>
&#13;
&#13;
&#13;