JS:添加一个值并附加到链接

时间:2014-10-21 22:13:29

标签: javascript html

我正在尝试向范围添加+1(或-1),然后将该值附加到a href。

这是我的代码:

<script>
$(function () {
    var valueElement = $('#value');
    function incrementValue(e) {
        valueElement.text(Math.max(parseInt(valueElement.text()) + e.data.increment, 0));
        calculateLink();
        return false;
    }
    $('#plus').bind('click', { increment: 1 }, incrementValue);
    $('#minus').bind('click', { increment: -1 }, incrementValue);

    function calculateLink() {
        var value1 = document.getElementById('value').innerText;
        var value2 = document.getElementById('valueone').innerText;
        var value3 = document.getElementById('valuetwo').innerText;

        var url = "deskshop3.aspx?item1=" + value1.text + "&item2=" + value2.text + "&item3=" + value3.text;
        var element = document.getElementById('cashierLink');
        element.setAttribute("href", url)
    }

});

现在,发生的事情是我能够通过按加号和减号按钮来更改“值”范围的值,但每当我按下href“cashierLink”时,它总是发送默认值“value”,“valueone” “和”valuetwo“页面加载。

我做错了什么?

提前致谢,

Arseney

2 个答案:

答案 0 :(得分:0)

您的valueElement首先更改了文字,但在calculateLink()来电期间,您正尝试使用value1.text分配网址。但是,value1没有.text属性,因为它是字符串而不是对象。这会导致执行过程中出现错误并最终提前退出代码,这就解释了为什么value元素会在视觉上发生变化,但是你的href值是不正确的。

请尝试为您的网址执行此操作:

var url = "deskshop3.aspx?item1=" + value1 + "&item2=" + value2 + "&item3=" + value3;

答案 1 :(得分:0)

我不确定这是你想要的方式,但你应该尝试使用全局变量而不是元素中的文本值。我做了一个JSFiddle来向你展示它的外观,你可以按照你想要的方式改变它。

DEMO

/// global variables ///

var valCount = 0;
var value1 = ['first value', 'second value', 'third value'];
var value2 = ['first 2nd value', 'second 2nd value', 'third 2nd value'];
var value3 = ['first 3rd value', 'second 3rd value', 'third 3rd value'];

////////////////////////

$('#plus').bind('click', function(){ calculateLink(); });
$('#minus').bind('click', function(){ calculateLink(true); });

function calculateLink(minus) {

    if(minus){
        if(valCount == 0)
        valCount = (value1.length-1);
        else
        valCount--;
    } else{
        if(valCount == (value1.length-1))
        valCount = 0;
        else
        valCount++;
    }

    var url = "deskshop3.aspx?item1=" + value1[valCount] +
        "&item2=" + value2[valCount] +
        "&item3=" + value3[valCount];

    document.getElementById('cashierLink').setAttribute("href", url);
}