【问题标题】:Increment or Decrement text box value(not attribute) within a loop循环内递增或递减文本框值(非属性)
【发布时间】:2020-05-10 12:23:39
【问题描述】:

如下所示,循环中有输入标签39次

for (i = 0; i <= 39; i++) {
document.write("<button id='minus'>-</button><input type='text' id='input' value='0' ng-model='number" + i + "'><button id='plus'>+</button><br><br>");
};

let pb = document.getElementById("plus");
let mb = document.getElementById("minus");
let text = document.getElementById("input");

pb.onclick = function() {
let x = text.getAttribute("value");
text.setAttribute("value", ++x);
};

mb.onclick = function() {
let x = text.getAttribute("value");
if (x >= 1) {
text.setAttribute("value", --x);
};
};

但我需要的是当我在循环中单击旁边的按钮时,使用该特定的 ng-model 编号增加/减少文本框的值。

还有那些为上面的“Total”文本框提供信息的文本框,它显示文本框中所有值的加法。所以只是更新值属性不起作用,有点角度,所以请帮我解决这个问题。

(dev.pfokus.com/product/caponi) 打开此 url 并选择产品、数量和颜色选择,观察控制台的行为。在颜色框中写一些数字,总字段得到更新。请检查控制台并帮助我解决添加 +/- 按钮的问题。

(justpaste.it/5tbwj) 这是我的 webiste 目录中 angular js 指令中的代码。这是从文本框中获取输入值的内容,请尝试使用 +/- 按钮触发。

这些是当我将“1”添加到文本框以及通过键盘输入将“2”添加到同一文本框时的控制台图像。

enter image description here

enter image description here

提前致谢:)

【问题讨论】:

  • 你会得到 39 个按钮,它们都具有相同的 id,使它们独一无二。您可以使用 data 属性来设置 ng-modal。当收到点击事件时,读取数据属性
  • @Grumpy (dev.pfokus.com/product/caponi) 打开此网址并选择产品、数量,然后它会带您选择颜色,观察控制台的行为。在颜色框中写一些数字,总字段得到更新。请检查控制台并帮助我解决添加 +/- 按钮的问题,谢谢。
  • 您需要从修复重复的 ID 开始,否则您不能指望它能够正常工作。 getElementById 只会为您获取文档中具有指定 ID 的第一个元素,如果您非法使用多个相同的 ID,您将无法使用此方法找到它们。
  • @04FS 我可以通过关注附近的文本字段或类来区分它们。但我需要的是将当前文本字段值发送到总计。如果我正在输入它,它正在工作,如果使用按钮增加值,它不会将数据发送到总值。涉及到 AngularJS,所以需要帮助。
  • 可能在某处附加了一些更改事件处理程序 - 但更改事件仅在用户更改字段值时触发,而不是在通过脚本发生时触发。在通过单击按钮更改其值之后,您可以通过显式触发字段上的更改事件来使其工作。 stackoverflow.com/a/25709149/10955263解释基本原理。

标签: javascript php html angularjs


【解决方案1】:

看看JSFiddle:https://jsfiddle.net/dLuzemrx/

我也是 Angular JS 的新手,只是完成了相关工作。任何优化或更正,请随时进行。

JS代码:

var dataHTML = "";
for (i = 0; i <= 39; i++) {
    dataHTML += '<button ng-click="value_'+ i +' = value_'+ i +' - 1">-</button><input ng-value="value_'+ i +'"><button ng-click="value_'+ i +' = value_'+ i +' + 1">+</button><br><br>';
}
document.querySelector('[ng-app="myApp"]').innerHTML = dataHTML;
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.myVar = "Hello World!";
    for (i = 0; i <= 39; i++) {
        $scope['value_'+ i] = 1;
    }
});

【讨论】:

  • (justpaste.it/5tbwj) 这是我的 webiste 目录中 angular js 指令中的代码。这是从文本框中获取输入值的内容,请尝试使用 +/- 按钮触发此操作,谢谢。
  • 我刚刚给出了一个方法,你可以自己尝试。正如我在回答中已经说过的那样,我也是 Angular 的新手。我将无法按照您在此处要求的方式为您提供帮助。如果我的回答给了你一些想法,那么最好等其他人给你一个合适的解决方案。
  • 是的,我看过你的,感谢你的工作和友好的回复,谢谢 :)
  • 如果答案有用,您可以接受它或直接投票。 :)
猜你喜欢
  • 2015-06-12
  • 2020-03-06
  • 1970-01-01
  • 2018-10-08
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
相关资源
最近更新 更多