2

我想在检查条件后动态插入不同的 url

这是伪代码

If div.id = "abc" then
create url <a href="www.zzz.html"'>Cosmetics</a>');
Append url to div

else if div.id = "xyz" then
create url <a href="www.abc.html"'>LEather goods</a>');
Append url to div

else if div.id = "mno" then
create url <a href="www.kkk.html"'>Diapers</a>');
Append url to div

等等。

我怎样才能用 JavaScript/jQUery 写这个。如果有 15 个这样的 If-Else 条件,如何有效地处理代码。

这段代码看起来不太好

if $("#abc) then

 var dynLink = $('<a href=zzz.html"'>Cosmetics</a>');
    $("#abc").append(dynLink);

else if $("#xyz")
 var dynLink = $('<a href=abc.html"'>LEather</a>');
    $("#xyz").append(dynLink);

谢谢!

4

4 回答 4

2

你可以试试这个:

var link = [
    ["#abc", "#wfh", "http://www.123.com", "Maine"],
    ["#123", "#qwe", "http://www.abc.com", "Texas"]
];

$.each(link, function(e) {
    $(link[e][0] + "," + link[e][1])
        .append("<a href='" + link[e][2] + "'>" + link[e][3] + "</a>");
});​

示例:http: //jsfiddle.net/Yvuvh/5/


这只是简单地设置数组中的链接和标题,并且for循环正在搜索数组以查看它是否可以找到带有div其中任何一个的a id,如果可以,则附加适当的链接。

要添加更多,只需将另一个添加arraylink数组中,如下所示:

var link = [
    ["#abc", "#wfh", "http://www.123.com", "Maine" ],
    ["#123", "#qwe", "http://www.abc.com", "Texas" ],
    ["#xyz", "#zyx", "http://www.yzx.com", "Mexico"]
];​
于 2012-05-30T02:50:28.297 回答
1
if $("#abc) then

 var dynLink = $('<a href=zzz.html"'>Cosmetics</a>');
    $("#abc").append(dynLink);

else if $("#xyz")
 var dynLink = $('<a href=abc.html"'>LEather</a>');
    $("#xyz").append(dynLink);

▲ 那不是有效的 JavaScript。


▼有一堆s的时候是这样的:if-then

switch(div.id){
    case "abc":
        $('<a href="zzz.html">Cosmetics</a>').appendTo("div#whateveritis");
        break;
    case "xyx":
        $('<a href="abc.html">Leather</a>').appendTo("div#whateveritis");
        break;
    case "more more more":
        //same stuff here.
        break;
    default:
        //default
        break;
}

对于初学者来说非常不言自明。;)

说真的,你应该开始浏览MDN MDN中的东西。它是 JavaScript 参考和演示(示例)的好地方。

于 2012-05-30T02:46:07.887 回答
1

创建一个包含所有这些关系的对象,如下所示:

var links = {
    'abc': { link:'foo.html', text:'Foo Link' },
    'xyz': { link:'bar.html', text:'Bar Link' }
};

然后我们将添加几个div元素来测试它:

​&lt;div id="abc"></div>
<div id="xyz"></div>​​​​​​​​​​
<div id="foo"></div>

最后是我们的 jQuery,它应该为我们添加一些链接:

$("div").append(function(){
    var link = links[this.id];
    return link ? $("<a>", { href:link.href, html:link.text }) : "n/a" ;
});​​​

这循环遍历我们所有的div元素,检查它们id是否在我们的links对象中找到。如果是,那么我们在其中放置一个div具有适当属性的链接。如果我们没有id在我们的对象中找到它,我们只需将“n/a”附加到div.

<div id="abc"><a href="foo.html">Foo Link</a></div>
<div id="xyz"><a href="bar.html">Bar Link</a></div>
<div id="foo">n/a</div>

演示:http: //jsfiddle.net/vFjSw/

于 2012-05-30T03:22:11.343 回答
0

将 div.id 放入映射到目标 URL 的关联数组中,然后通过键查找。如果您只需为每次查找加载一次,则一个散列查找将击败线性数量的 if/else-if 比较......

无论微观性能如何,这让我觉得更“优雅”、可读或可维护。对我来说,make array v.run if/else if 哪个更快并不明显,你必须进行分析。但是,如果您 1) 必须针对时间进行优化,并且 2) 每次加载页面时只期望使用一次此代码,那么您能做的最好的事情就是将您期望的 url 放在 if/elif 块的顶部。请务必准确评论您正在这样做,以便未来的开发人员不会按字母顺序排列它们。

于 2012-05-30T02:36:08.080 回答