单击超链接时如何将 href 的值传递给 javascript 并在 window.location 中使用它?

How to pass value of href to javascript and use it in window.location when a hyperlink is clicked?

我有两种类型的 hyperlinks 。当第一个被点击时,href 的值被传递给函数,但它的值从未在 window.location 中使用过!(因为它打开 link 在 safari 而不是 iphone webApp 中)。当调用第二个 hyperlink 时,href 的值永远不会传递给函数,并且 href 值再次在 safari 而不是 webApp 中打开!可能任何人都可以帮助我将 href 的值传递给函数并在 window.location 中使用它,而不是提前在 safari.Thanks 上打开它。

<li class="x"><a id="1" title="1" href="./test.php?try" onclick="myFunction(location.href=this.href);"> <img id="Button1" src="./1.png" alt="" width="42" height="42" border="0"><div class="caption" style="color:red">FIRST</div></a></li>
<li class="x"><a id="2" title="2" href="./test.php" onclick="myFunction(location.href=this.href+'?try&appid='+currentID;return false;);"> <img id="Button2" src="./2.png" alt="" width="42" height="42" border="0"><div class="caption" style="color:red">SECOND</div></a></li>


<script>
function myFunction(myLink) {

alert("hello"+myLink);

    window.location = myLink;
}
</script>

您正在尝试 运行 才能走路...

您的 javascript 需要做更多的工作。避免将 javascript 放在 html 中。因此避免这样的事情:

onclick="myFunction(location.href=this.href);"

我会使用 jquery(javascript 库),因为它会在长期 运行 中提供帮助,因为它会导致您跨浏览器兼容。

您的 "id" 标签应该是字母或字母数字,而不是数字。所以 id="1" 是(我相信)非法的,即使它有效。

实际上...抱歉...但是我想得越多,您确实需要一本好书来提升您的 javascript,然后再尝试您想要做的事情,否则您将无法理解您的某些工作的局限性或风险。

使用jquery(它本身写在javascript中)你可以通过

改变URL
$("#link1").click( Change1 );
$("#link2").click( Change2 );

function Change1()
{
 $("#link1").href("./test.php?try");
}

function Change1()
{
 $("#link2").href("./test.php?try");
}

如果您的 id 标签从 id="1" 重命名为 id="link1" 并将 id="2" 重命名为 id="link2"

对不起,我帮不上忙了...

这里有几件事在起作用。正如 fiprojects 指出的那样,最好不要做 inline JavaScript (一些原因只是个人喜好)。你最终会重复自己并使维护代码变得困难 (among other reasons). Your best bet is to use Event Listeners (w3schools link,并不总是最好的资源,但对于这个例子来说已经足够了)。如果你重新使用 JavaScript 库 (jQuery)。但是由于您请求了 JavaScript 解决方案,我将在我的回答中概述如何做到这一点。

首先,让我们格式化您的代码以使其更易于阅读:

<li class="x">
    <a id="1" title="1" href="./test.php?try" class="myLink">
        <img id="Button1" src="http://placehold.it/360x240">
        <div class="caption" style="color:red">FIRST</div>
    </a>
</li>
<li class="x">
    <a id="2" title="2" href="./test.php" class="myLink"> 
        <img id="Button2" src="http://placehold.it/360x240">
        <div class="caption" style="color:red">SECOND</div>
    </a>
</li>

我在这里只做了一些改动。我删除了 JavaScript onclick。我创建了一个占位符图像(仅出于我自己的目的,因为我没有你的图像,你会想把你的图像放回那里)。最后,我在你的 <a> 中添加了一个 class="myLink"。这将使我们能够更轻松地通过事件侦听器引用您的 link。

对于JavaScript

<script>
    var linksArray = document.getElementsByClassName("myLink");

    var myFunction = function(event) {
        event.preventDefault();
        var href = this.getAttribute("href");
        alert('hello ' + href);
        window.location = link;
        return false;
    };

    for (var i = 0; i < linksArray.length; i++) {
        linksArray[i].addEventListener('click', myFunction, false);
    }
</script>

第一行是创建一个数组,其中包含具有 class="myLink" 的任何元素。稍后我们将遍历这个数组,并添加事件监听器。在我们循环之前,我们需要创建你的函数。

为了防止用户单击 link 时发生的默认操作,我们需要停止传播。所以我们将在这里使用 event.preventDefault()。我还在函数中添加了 return false; 。两者都旨在做同样的事情。

我们将使用 this 来获取引用,而不是传递变量。我们还将使用 JavaScript 函数 getAttribute 并将 href 传递给它。这将为您提取 href 值。

最后,我们正在循环 linksArray。我们正在添加一个 click 事件侦听器并将 myFunction 分配为 callback。现在,只要用户点击其中一张图片,就会触发此功能。

here's a working example on JSFiddle.