如何使用javascript函数设置href参数值

时间:2016-03-01 07:41:47

标签: javascript html

我有以下表格,

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    ListAdapter adapter =new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,values);
    setListAdapter(adapter);
    getListView().setOnItemClickListener(this);
}

我想在选择下拉列值时更改lang的值

这是我的javascript函数,

<form:form method="POST" commandName="language">
        <table>
            <tr>
                <td>Language:</td>
                <td>
                    <form:select path="languageName" id="mySelect" onchange="myFunction(this.value)">
                        <form:option value="" label="...." />
                        <form:options items="${languages}" />
                    </form:select>
                </td>
                <td>
                    <form:errors path="languageName" cssStyle="color: #ff0000;" />
                </td>

            </tr>

            <tr>
                <td>
                    <a id="demo" href="/eidsar/openid-authn-request?type=ident&lang=">OpenID 2.0 Identification</a> <br>
                    <a href="/eidsar/openid-authn-request?type=auth&lang=">OpenID 2.0 Authentication</a> <br>
                    <a href="/eidsar/openid-authn-request?type=auth-ident&lang=">OpenID 2.0 Identification and Authentication</a> <br>
                </td>
            </tr>
            <tr>
        </table>
    </form:form>

但是当我点击href链接时,我无法在网址中发送语言值。 任何帮助,将不胜感激。 请不要将其标记为重复,因为我没有找到相同的正确答案。

4 个答案:

答案 0 :(得分:2)

您需要这样做,将结果分配回
document.getElementById("demo").href = '...';

此外,您的函数还有另一个缺陷,即链接无法正确重置,每次选择更改时都会增加,因此这里有一种方法可以解决原始href存储和重用的问题。

function myFunction(val) {

  var elem = document.getElementById('demo');

  if (!elem.hasAttribute('data-href')) {
    elem.setAttribute('data-href', elem.href);    
  }

  elem.href = elem.getAttribute('data-href')+val));
}

我想您想要更改所有链接,因此这是使用现有标记的简单方法

function myFunction(val) {
  var elem = document.getElementById('demo');
  var children = elem.parentNode.children;
  for (var i = 0; i < children.length; i++) {
    setHref(children[i],val);
  }
}

function setHref(elem,val) {
  if (!elem.hasAttribute('data-href')) {
    elem.setAttribute('data-href', elem.href);    
  }
  elem.href = elem.getAttribute('data-href')+val));
}

答案 1 :(得分:1)

如果是这种情况,

 <a id="demo"...>..</a>

然后您可以通过into JavaScript function

这样做
var pastLink =  document.getElementById("demo").getAttribute("href");
document.getElementById("demo").href = pastLink  + "someNewLink.html";

答案 2 :(得分:1)

try something like:


function method(val){
           //capture elements wanna change
            try{
                 var link = document.getElementById("mylink");
                //check value selection
                if(val == 'x'){
                    link.innerHTML = "facebook";,
                    link.setAttribute('href', "http://facebook.com ?lang= somevalue");
                }else if(...){
                  ....
                }
            }catch(err){
               //just to show you differents ways to capture errors
               console.log(err.message) 
               //or 
               document.getElementById("some_div_for_message").innerHTML = err.message;
            }
        return false;
        }

答案 3 :(得分:1)

你可以尝试这样做吗

var href= document.getElementById("demo").href;
 function myFunction(href, val) {
    document.getElementById("demo").href = href + val;
            /* var text = document.getElementById("demo").getAttribute("href")+val;
            document.getElementById("demo").href = text; */
            // document.getElementById("demo").href.replace(document.getElementById("demo").getAttribute("href"), document.getElementById("demo").getAttribute("href")+val);
            // alert( document.getElementById("demo").href.replace(document.getElementById("demo").getAttribute("href"), document.getElementById("demo").getAttribute("href")+val));
        }

你可以在这篇文章中看到thios问题 How to change the href for a hyperlink using jQuery 期待它可以帮助你