Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:添加一个值并附加到链接_Javascript_Html - Fatal编程技术网

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

Javascript JS:添加一个值并附加到链接,javascript,html,Javascript,Html,我正在尝试将+1或-1添加到范围,然后将该值附加到an href 这是我的代码: <script> $(function () { var valueElement = $('#value'); function incrementValue(e) { valueElement.text(Math.max(parseInt(valueElement.text()) + e.data.increment, 0)); calculateLi

我正在尝试将+1或-1添加到范围,然后将该值附加到an 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)
    }

});
现在,我可以通过按下加号和减号按钮来更改value span的值,但每当我按下href cashierLink时,它总是发送页面加载的value、valueone和valuetwo的默认值

我做错了什么

提前感谢,

Arseney

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

请尝试对您的URL执行以下操作:

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

我不确定这是您想要的方式,但是您应该尝试使用全局变量,而不是元素的文本值。我制作了一个JSFIDLE来向您展示它的外观,您可以按照自己的方式进行更改


您是否尝试过查看调试器中是否存在任何控制台错误?什么是value1.text,这些值应该只是字符串,而不是带有.text属性的对象。你说得对。那是最后一刻的错误。然而,将其更改为valueone并没有改变结果。是的,我错写了两次文本。我已将其更改为您编写的内容,但结果是相同的。您是否确实在deskshop3.aspx页面初始化时读取了值item1、item2和item3的查询字符串,然后应用它们?谢谢。我发现了我的问题。value2和value1为null,它们的可见性为false,我不知道这会使它们为null。因此,现在我在使用它们之前首先检查它们是否为null,一切都正常!
/// 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);
}