如何在href中运行javascript?

时间:2016-12-28 20:04:04

标签: javascript html

我试图在href中运行一串脚本,以便链接根据if / else语句重定向用户。我的代码:

 <div id="editredirect">
<script>
    if("[@authfield:Authentications_2_Region]" == "[@field:Location_2_Region_ID]"){
    window.location.href = "member-details-edit?CID=[@field:Member_Caspio_ID]&amp;Location_ID=[@field:Member_Location_ID]";
    }
    else if ("[@authfield:Authentications_2_Region]") == "[@field:Location_2_B_Region_ID]"{
    window.location.href = "member-details-edit?CID=[@field:Member_Caspio_ID]&amp;Location_ID=[@field:Member_Location_ID]";
    }
    else {
    window.location.href = "member-details?CID=[@field:Member_Caspio_ID]&amp;Location_ID=[@field:Member_Location_ID]";
    }
</script>
</div>

<style type="text/css">a.ex1:hover {color: #f18c21; text-decoration: underline;}
</style>

<a class="ex1" href="javascript:.initialize(document.getElementById("editredirect"));">Details</a>

我也做过这样的功能:

 <script>
    function editredirect {
    if("[@authfield:Authentications_2_Region]" == "[@field:Location_2_Region_ID]"){
    window.location.href = "member-details-edit?CID=[@field:Member_Caspio_ID]&amp;Location_ID=[@field:Member_Location_ID]";
    }
    else if ("[@authfield:Authentications_2_Region]") == "[@field:Location_2_B_Region_ID]"{
    window.location.href = "member-details-edit?CID=[@field:Member_Caspio_ID]&amp;Location_ID=[@field:Member_Location_ID]";
    }
    else {
    window.location.href = "member-details?CID=[@field:Member_Caspio_ID]&amp;Location_ID=[@field:Member_Location_ID]";
    }
    }
</script>

<style type="text/css">a.ex1:hover {color: #f18c21; text-decoration: underline;}
</style>

<a class="ex1" href="javascript:editredirect">Details</a> 

两者都不会起作用。第一个字符串返回语法错误,第二个字符串告诉我&#34; editredirect&#34;未定义。

谢谢!

修改

Praveen Kumar的建议是最好的。我正在使用的数据库的开发人员能够让应用程序执行它而无需插入任何脚本。但是,他们确实说过,一旦我的参数正确,事件监听器也会工作。

1 个答案:

答案 0 :(得分:3)

您可以使用onclick并添加整个JavaScript逻辑:

&#13;
&#13;
<a href="#" onclick="a = prompt('What\'s your name?'); if (a !== null) alert('Welcome, ' + a); else alert('Bye Bye!'); return false;">Click me?</a>
&#13;
&#13;
&#13;

最好的方法是使用这样的事件监听器:

&#13;
&#13;
document.getElementsByTagName("a")[0].addEventListener("click", function () {
  a = prompt('What\'s your name?');
  if (a !== null)
    alert('Welcome, ' + a);
  else
    alert('Bye Bye!');
  return false;
}, false);
&#13;
<a href="#">Click me?</a>
&#13;
&#13;
&#13;

这比使用href更好。如果您仍想在href中运行它,则需要创建一个函数并运行:

&#13;
&#13;
function aha() {
  a = prompt('What\'s your name?');
  if (a !== null)
    alert('Welcome, ' + a);
  else
    alert('Bye Bye!');
  return false;
}
&#13;
<a href="javascript:aha();">Click me?</a>
&#13;
&#13;
&#13;

  

注意:在您的代码中,您使用了错误的表示法。这是一个语法错误。必须以特定方式声明JavaScript函数。跟着那个!