无法在HTMLScriptObject上设置数据属性

时间:2014-04-01 03:09:32

标签: javascript jquery stripe-payments

我有一个HTMLScriptObject,我试图修改数据属性。我需要计算数据量并设置在脚本中使用但没有运气的值。我有= javascript正常工作(根据日志中的最终值),但我似乎无法在下面的标记中更改数据量属性。以下是相关的HTML标记:

<script src="/static/js/filename.js"></script>
<form action="" method="POST">
  <script id="stripe-button"
    src="https://checkout.stripe.com/checkout.js" 
    data-amount="0"
    ...
    >
  </script>
</form>

这是相关的filename.js:

$(document).ready(function(){
    $( ".btn-service" ).click(function(){

        //add service price to the subtotal
        subtotalObj = $( "#subtotal" );
        price = parseInt($(this).data("price"));
        previousSubTotal = parseInt($( "#subtotal" ).text());

        if ($(this).hasClass( "btn-added" )) {
            nextSubTotal = previousSubTotal + price;
            $(this).text("Remove From Cart");
        }
        else if ($(this).hasClass( "btn-add" )) {
            nextSubTotal = previousSubTotal - price;
            $(this).text("Add To Cart");
        }

        //update the values
        subtotalObj.text(nextSubTotal);
        var stripe = document.getElementById('stripe-button');
        stripe.setAttribute('data-amount', nextSubTotal);
        console.log(stripe.getAttribute('data-amount')); //this returns the correct amount.
    });
});

data-amount属性末尾的控制台日志返回我正在寻找的值,但是当我查看标记源时,数据量值仍为0.不确定为什么数据量是没有被改变。

我也试过使用attr()方法,但是JQuery发出了一条错误信息:Object#没有方法'attr'。我也尝试过使用数据('金额',值),但这会产生同样的错误 - 没有方法'数据'。

1 个答案:

答案 0 :(得分:0)

如果“在标记中”表示使用浏览器的“查看源”功能,那么您正在查看页面源,它​​不会更新以反映DOM更改(它是源,而不是当前文档)

使用Web检查器或调试器查看当前DOM的标记内容,或获取表单的innerHTML属性。

此外,您应该使用 var 声明所有这些变量,以使它们保持本地。