2016-03-12 86 views
-4

我已经写了这个简单的函数来打开一个新窗口onclick;多种结果的一种功能

<script type="text/javascript"> 
function solopopup() 
{ 
mywindow = window.open("http://www.sample.com/solopopup","mywindow","menubar=1,resizable=1,width=768,height=850"); 
mywindow.moveTo(0, 0); 
} 
</script> 

<a href="#" onclick="solopopup()"><li>one</li></a> <!--This goes to url above --> 
<a href="#" onclick="solopopup()"><li>Two</li></a> <!--This goes to a different url --> 

有没有一种方法可以使URL更改取决于我点击的链接,所以我不必为每个链接重写函数?

感谢, 斯科特

+0

将URL传递作为参数传递给函数。 –

+0

这是一个非常钝的论点,而且你的论点是你“你是如何提出你的问题的”这一事实使我想在删除它之前知道原始问题。 –

回答

1

您必须将网址作为参数传递给函数

 <script type="text/javascript"> 
     function solopopup(url) 
     { 
     mywindow = window.open(url,"mywindow","menubar=1,resizable=1,width=768,height=850"); 
     mywindow.moveTo(0, 0); 
     } 

     <a href="#" onclick="solopopup('http://www.sample.com/solopopup')"><li>one</li></a> <!--This goes to url above --> 
     <a href="#" onclick="solopopup('http://www.sample.com/solopopup')"><li>Two</li></a> <!--This goes to a different url --> 
+0

代码转储不是*有用*的答案。说你改变了什么,为什么。另外,请记住那些引号。点击上面的任一链接都会给你一个JavaScript错误。 –

1

你要的网址传递给函数作为参数。

HTML

<a href="#" onclick="solopopup('http://www.mysite1.com')"><li>one</li></a> 
<a href="#" onclick="solopopup('http://www.mysite2.com')"><li>Two</li></a> 

的JavaScript

function solopopup(url) 
{ 
    mywindow = window.open(url,"mywindow","menubar=1,resizable=1,width=768,height=850"); 
    mywindow.moveTo(0, 0); 
} 
0

您的链接顷突兀,因为如果JS是禁用的,他们将无法正常工作。更好地利用

function mylinkHandler() { 
 
    var mywindow = window.open(this.href, "mywindow", "menubar=1,resizable=1,width=768,height=850"); 
 
    mywindow.moveTo(0, 0); 
 
} 
 
[].forEach.call(document.querySelectorAll('.mylink'), function(el) { 
 
    el.addEventListener('click', mylinkHandler); 
 
});
<ul> 
 
    <li><a class="mylink" href="http://www.example.com/one">one</a></li> 
 
    <li><a class="mylink" href="http://www.example.com/two">two</a></li> 
 
</ul>

1

移动JS出了锚和使用数据属性来存储的URL。

HTML

<a class="url" data-url="http://one.com"> 
    <li>one</li> 
</a> 

<a class="url" data-url="http://two.com"> 
    <li>Two</li> 
</a> 

JS

function solopopup(e) { 
    e.preventDefault(); 
    mywindow = window.open(this.dataset.url, "mywindow", "menubar=1,resizable=1,width=768,height=850"); 
    mywindow.moveTo(0, 0); 
} 

var urls = document.querySelectorAll('.url'); 

[].slice.call(urls).forEach(function (a) { 
    a.addEventListener('click', solopopup, false); 
}); 
+0

已投票,因为与其他人不同,此答案包含event.preventDefault()。 – Roberto