0

我有两个文件:一个 html 文件(包含下面的代码)和一个 javascript 文件(它为<span id="quantity">.

一旦“数量”发生变化,我希望单词从“文章”更改为“文章”,反之亦然。这可能吗?如果是这样,怎么办?

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

<script type="text/javascript">

        $(window).load(function() 
        {
        var quantity = document.getElementById("quantity"),
            quantityText = document.getElementById("quantityText");
        if (parseInt(quantity.innerHTML, 10) === 1) {
            quantityText.innerHTML = "article";
       } else {
            quantityText.innerHTML = "articles";
        }
        });

</script> 
4

2 回答 2

2

您可能想研究像Knockout JS这样的 MVVC 框架。例如,您可以将#quantity <span></span>元素的内容设置为可观察的。

但是,请尝试阅读此 SO 线程以找到类似于您可能希望的解决方案。总之,更改事件仅在表单字段模糊时从浏览器发生,因此您需要实现一个$("#quantity").trigger('change')

在加载 DOM 元素后设置触发器后,您可以执行以下操作:

$('#myParentNode').on('change','#mynum', function() {
    // Add your logic in here
    $('#quantityText').text('articles')  .... .. .. ..... 
});
于 2013-11-04T15:13:17.380 回答
0

通常,该span元素不会触发change事件,因此您不能像通常在input元素中那样订阅它。

但是,您可以在同一代码中使用 jQuery 触发此类事件,这会更改 span 的值(我假设有这样的代码,因为通常spans 不会更改值)。

这是一个每 10 秒模拟一次更改并触发change事件的示例。它还包括该更改事件的处理程序,该处理程序复制另一个跨度中的值。

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

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>

<script type="text/javascript">

$(document).ready(function() {
    var quantity = $("#quantity"),
        quantityText = $("#quantityText");

    setInterval(function() {
        var currentVal = parseInt(quantity.html());
        if (currentVal >= 10) {
            quantity.html(1);
        }
        else {
            quantity.html(currentVal + 1);
        }
        quantity.trigger('change');
    }, 10000);

    quantity.on('change', function(sender, args) {
        quantityText.html($(this).html());
    });
});

</script>
于 2013-11-04T15:16:53.473 回答