0

我想使用 javascript 添加脚本标签,但我无法让它工作。下面是代码。我想在 bigcommerce 购物车页面中添加此代码。

    var duration = document.getElementsByName("cartdata");
    var cartstr = '<!-- MyBuys Page Parameters – Place in <body> element -->';
    cartstr += '<script type="text/javascript">';
    cartstr += 'mybuys.setPageType("SHOPPING_CART");';
    cartstr += 'mybuys.set("email","consumer@example.com"); <!--consumer email can be blank if not known-->';
    cartstr += 'mybuys.set("amount","99.34");';

    for (var i = 0; i < duration.length; i++) {
        str = duration[i].value;
        var n = str.split('|');
        cartstr += 'mybuys.addCartItemQtySubtotal("'+n[0]+'","'+n[1]+'","'+n[2]+'");'+'<br>';
    }

    cartstr += '</script>';
    cartstr += '<!-- End MyBuys Page Parameters -->';

    //alert(cartstr);

    var script   = document.createElement("script");
    script.type  = "text/javascript";
    script.text  = cartstr;           // use this for inline script
    document.body.appendChild(script);

我想将以下代码添加到页面:

<!-- MyBuys Page Parameters – Place in <body> element -->
<script type="text/javascript">
mybuys.setPageType("SHOPPING_CART");
mybuys.set("email","consumer@example.com"); <!--consumer email can be blank if not known-->
mybuys.set("amount","99.34");
mybuys.addCartItemQtySubtotal("12345","1","54.34");
mybuys.addCartItemQtySubtotal("56789","3","45.00");
</script>
<!-- End MyBuys Page Parameters -->
4

4 回答 4

1

这演示了如何动态添加 JavaScript:

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript">
        var optionalFunctionLoaded = false;
        var commonFunction = function() {
            console.log("test button clicked " + (new Date()).toLocaleString());
            if (!optionalFunctionLoaded) {
                // get optionalSrc e.g. via AJAX, eventually providing actual input values
                var optionalSrc = 'function optFun(){console.log("optional function");}';
                // if optionalSrc is not empty 
                var script = document.createElement("script");
                script.innerHTML = optionalSrc;
                document.head.appendChild(script);
                optionalFunctionLoaded = true;
            }
            if(optionalFunctionLoaded) optFun();
        }
    </script>
</head>
<body>
    <button id ="testButton">test</button>
    <script type="text/javascript">
        document.getElementById("testButton").onclick = commonFunction;
    </script>
</body>
</html>

使用 Firefox 24.0 / Linux 测试。

于 2013-10-23T13:18:19.517 回答
0

我不知道你为什么要这么做。但是,如果您真的想这样做,可以尝试以下方法。

$('body').append("console.log('blah');")

或者

$('body').html($('body').html()+"console.log('blah');")

用您的代码替换 console.log('blah')

请注意,这是假设您使用的是JQuery。

如果没有,你仍然可以使用 Native Javascript 来做类似的事情。只需使用 vanila javascript 搜索创建一个元素并将其添加到另一个元素,您就会在 google 上获得大量信息。

虽然,正如epascarello所说,这样做并不是一个好主意。它基本上是一种代码气味,您可以改进您的代码。

希望这可以帮助。

于 2013-10-23T12:38:31.773 回答
0

您应该只执行代码,无需构建字符串。最后,您要做的与运行代码相同!只需执行它。

mybuys.setPageType("SHOPPING_CART");
mybuys.set("email","consumer@example.com");
mybuys.set("amount","99.34");

for (var i = 0; i < duration.length; i++) {
    str = duration[i].value;
    var n = str.split('|');
    mybuys.addCartItemQtySubtotal(n[0],n[1],n[2]);
}
于 2013-10-23T12:28:09.463 回答
0

解决方案是将代码添加到页面中:

<!-- MyBuys Page Parameters – Place in <body> element -->
<script type="text/javascript">
mybuys.setPageType("SHOPPING_CART");
mybuys.set("email","consumer@example.com"); <!--consumer email can be blank if not known-->
mybuys.set("amount","99.34");
mybuys.addCartItemQtySubtotal("12345","1","54.34");
mybuys.addCartItemQtySubtotal("56789","3","45.00");
</script>
<!-- End MyBuys Page Parameters -->

为什么要用 JavaScript 把它放在那里?只需将其添加到页面。您可能需要使用循环对其进行一些调整:

for (var i = 0; i < duration.length; i++) {
    str = duration[i].value;
    var n = str.split('|');
    mybuys.addCartItemQtySubtotal(n[0],n[1],n[2]);
}
于 2013-10-23T12:24:51.870 回答