如何访问脚本标记之外的Javascript变量值

时间:2015-05-29 09:40:44

标签: javascript html css3

我想访问Javascript标记之外的Javascript变量值。

<img height="0" width="0" border="0" src="http://testing.com?merchantId=M1&orderNo=%%GLOBAL_OrderId%%&saleAmount=I want the Grand+Total Value here">
$conn = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

4 个答案:

答案 0 :(得分:2)

您需要更新src元素的img属性。假设你给了img一个id (你没有,有其他方法可以选择它,但我保持简单)

<img id="the-image" height="0" width="0" border="0" src="http://testing.com?merchantId=M1&orderNo=%%GLOBAL_OrderId%%&saleAmount=I want the Grand+Total Value here">

然后:

function getprices(input) {
    return input.match(/[0-9]+/g);
}
var subtotals = getprices('%%GLOBAL_OrderTotal%%'); // <=== Changed to `getprices`, was `get_getprices`
var Grand_total=subtotals[0];
var img = document.getElementById("the-image");
img.src = "http://testing.com?merchantId=M1&orderNo=%%GLOBAL_OrderId%%&saleAmount=" + Grand_total;

看起来Grand_total将始终是一个数字,但对于可能不是的一般情况,请务必使用encodeURIComponent(即使是img.src = "http://testing.com?merchantId=M1&orderNo=%%GLOBAL_OrderId%%&saleAmount=" + encodeURIComponent(Grand_total); 也不会造成任何伤害一个数字):

id

如果您未在img上使用document.querySelector,那很好,您可以通过getprices使用任何CSS选择器。这得到了所有现代浏览器以及IE8的支持。

请注意,该代码存在其他问题,但至少readObject()看起来相当可疑。

答案 1 :(得分:1)

您可以使用

document.getElementsByTagName("img")[***index of the image tag***].src = "<THE STRING>"+<THE VARIABLE>+"<THE REMAINING STRING>";

或为<img>分配ID并使用

`document.getElementById(“ 图片的ID ”)。src =“”++“”;

答案 2 :(得分:1)

您需要做的就是在javascript

中将值分配给img的src
$("#imgNeeded").attr("src",".../"+Globalvalue)

作为T.J.克劳德说。如果您的变量包含数字

以外的其他内容,请确保对URI进行编码

答案 3 :(得分:1)

提供的方法共享的问题是,如果它们如何,您的图像将在更改前加载不需要的来源:

<html>
    <head>
        <script>
            function getprices(input){return input.match(/[0-9]+/g)};

            function changeSrc(){
                var tE = document.querySelector("img[src*='saleAmount=']");
                var tS = getprices('anyPrice1');

                if (tE && tS) tE.src += encodeURIComponent(tS[0]);
            };
        </script>
</head>

<body onload = 'changeSrc()'>
    <img height = '0' width = '0' border = '0' src = 'http://JUSTTOSHOWtesting.com?merchantId=M1&orderNo=%%GLOBAL_OrderId%%&saleAmount=' onerror = 'console.log(this.src)'>
</body>

您的控制台将记录两个电话:

- GET http://justtoshowtesting.com/?merchantId=M1&orderNo=%%GLOBAL_OrderId%%&saleAmount= net::ERR_NAME_NOT_RESOLVED
- GET http://justtoshowtesting.com/?merchantId=M1&orderNo=%%GLOBAL_OrderId%%&saleAmount=1 net::ERR_NAME_NOT_RESOLVED

所以你可以做的就是放置一个占位符,直到你得到你需要的来源:

<html>
    <head>
        <script>
            function getprices(input){return input.match(/[0-9]+/g)};

            function createSrc(){
                var tE = document.querySelector("ins[src*='saleAmount=']");
                var tS = getprices('anyPrice1');

                if (tE && tS){
                    var tI = document.getElementById('iPlaceholder');
                    if (!tI){
                        tI = document.createElement('img');
                        tI.id = 'iPlaceholder';
                        tI.onerror = function(){console.log(this.src)};
                        tE.parentNode.insertBefore(tI, tE.nextSibling);
                    };
                    tI.src = tE.getAttribute('src') + encodeURIComponent(tS[0]);
                };
            };
        </script>
    </head>

    <body onload = 'createSrc()'>
        <ins src = 'http://JUSTTOSHOWtesting.com?merchantId=M1&orderNo=%%GLOBAL_OrderId%%&saleAmount='></ins>
    </body>
</html>

现在你的控制台只会记录一个电话:

- GET http://justtoshowtesting.com/?merchantId=M1&orderNo=%%GLOBAL_OrderId%%&saleAmount=1 net::ERR_NAME_NOT_RESOLVED