0

我有两个文件:一个名为 simplecart.js 的 javascript 文件,它创建了一个显示在 <span id="quantity" class="simpleCart_quantity"></span>我拥有的另一个文件中的值,一个 html 文件。html 文件包含以下代码:

<span id="quantity" class="simpleCart_quantity"></span>
<span id="quantityText"></span>

  <script type="text/javascript">
    var quantity = document.getElementById("quantity"),
        quantityText = document.getElementById("quantityText");
    if (parseInt(quantity.innerHTML, 10) === 1) {
        quantityText.innerHTML = "article";
    } else {
        quantityText.innerHTML = "articles";
    }
</script> 

问题是: 似乎代码无法获取两者之间的值<span id="quantity" class="simpleCart_quantity"></span>(请记住,该值是在外部文件 simplecart.js 中创建的),现在总是显示“文章”,因为它无法查看该值是否是“1”。

我希望有人可以帮助我解决这个问题,非常感谢!

4

2 回答 2

0

根据您的 simplecart.js 文件的外观,很有可能您的 html 文件中的 javascript 代码实际上运行得太早(在文档实际准备好之前)。您应该延迟任何 DOM 操作,例如使用(或使用 jquery):

document.onload = function () {
    var quantity = document .......
}

最好为此使用绑定库(如 Angular.js),但您可以定期更新该字段作为快速解决方案:

var updatePlural = function () {
    var quantity = document .......
}
setInterval(updatePlural, 250); // every 250ms
于 2013-11-04T13:47:57.840 回答
0

您需要延迟运行 JS,直到使用数据填充跨度的 JS 运行之后。

由于您的脚本元素紧随其后出现,因此它将立即提取该值。没有更好的方法来确保其他 JS不会先运行。

如何将 JS 延迟到最佳时机的具体细节取决于 simplecart.js 中的相关代码何时运行,

于 2013-11-04T13:48:42.880 回答