RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1437017
Accepted
Егор
Егор
Asked:2022-08-07 12:03:40 +0000 UTC2022-08-07 12:03:40 +0000 UTC 2022-08-07 12:03:40 +0000 UTC

如何显示属性中的文本?

  • 772

如何从输入字段属性输出文本?由于我这样做了,它只正确显示数字,而不是文本显示 NaN(您需要获取 TEXT),我附上了代码,您可以通过单击 + 来查看它显示的内容:

$('body').on('click', 'button.plus, button.minus', function() {

  var qty = $(this).parent().find('input'),

    name = parseInt(qty.attr('qwe'));
    
  console.log(name);


});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="input-number">
  <button type="button" name="valueDown" onclick="stepDown()" class="input-number-down minus">-</button>
  <input class="block" name="kol" type="number" value="13" id="50" qwe="123" min="1" max="50" step="1">
  <button type="button" name="valueUp" onclick="steUp()" class="input-number-up  plus">+</button>
</div>

<div class="input-number">
  <button type="button" name="valueDown" onclick="stepDown()" class="input-number-down minus">-</button>
  <input class="block" name="kol" type="number" value="13" id="50" qwe="Текст" min="1" max="50" step="1">
  <button type="button" name="valueUp" onclick="steUp()" class="input-number-up  plus">+</button>
</div>

javascript html
  • 1 1 个回答
  • 29 Views

1 个回答

  • Voted
  1. Best Answer
    Михаил Ребров
    2022-08-07T14:00:16Z2022-08-07T14:00:16Z

    你所有问题的根源在于:

    • 你正试图勾搭同一个事件
      • 并获得一个数值
      • 并获得一个字符串值
    • 您正在尝试将在语义上彼此完全不同的字符串和数值存储在同一属性中

    因此,您首先收到了属性的数值,并在帮助下parseInt()将其转换为数字。
    但是,然后,使用相同的事件处理程序,您从相同的属性中获得一个字符串(仅在不同的元素中)
    您获得一个字符串,尝试解析它parseInt()并自然地得到一个错误。

    我不知道你的目标到底是什么,所以我将尝试描述几种解决方案。

    选项编号 1

    让我们假设您确实面临这样的情况,您只需要将字符串和整数值都存储在同一个属性中,并在同一个事件处理程序中处理它们。

    那么如何摆脱这种情况呢?
    这很简单:您需要以某种方式确定我们作为输入的数字或字符串。

    为此,我们可以基于一对正则表达式编写一个简单的函数,该函数确定传递的字符串 "是否为数字:

    function isNumeric(str) {
        if(str.match(/^-?\d+$/)) { return true; }
        if(str.match(/^\d+\.\d+$/)) { return true; }
        return false;
    }
    

    因此,稍后我们可以在属性中定义一个数字或仅定义一个字符串,并根据此将整个事物带入一个数字或按原样保存

    var typedAttrValue;
    if(isNumeric(qty.attr('qwe'))){
        typedAttrValue = parseInt(qty.attr('qwe'));
    } else {
        typedAttrValue = qty.attr('qwe');
    }
    

    好吧,或者一切都一样,只有一行:

    typedAttrValue = isNumeric(qty.attr('qwe')) ? parseInt(qty.attr('qwe')) : qty.attr('qwe'); 
    

    注意
    我想注意,您还将事件处理程序附加到布局中的按钮

      <button ... onclick="stepDown()" ...>-</button>
      ...
      <button ... onclick="steUp()" ...>+</button>
    

    它们不在问题范围内,而且它们也抛出错误,所以我在下面给出两个工作示例,但是:

    • 在其中一个中,我删除onclick="stepDown()"并onclick="steUp()"
    • 在另一个我插入两个空函数stepDown()和steUp()

    没有点击

    function isNumeric(str) {
        if(str.match(/^-?\d+$/)) { return true; }
        if(str.match(/^\d+\.\d+$/)) { return true; }
        return false;
    }
    
    $('body').on('click', 'button.plus, button.minus', function() {
        var qty = $(this).parent().find('input'),
        typedAttrValue = isNumeric(qty.attr('qwe')) ? parseInt(qty.attr('qwe')) : qty.attr('qwe');   
        console.log(typedAttrValue);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div class="input-number">
      <button type="button" name="valueDown" class="input-number-down minus">-</button>
      <input class="block" name="kol" type="number" value="13" id="50" qwe="123" min="1" max="50" step="1">
      <button type="button" name="valueUp" class="input-number-up  plus">+</button>
    </div>
    
    <div class="input-number">
      <button type="button" name="valueDown" class="input-number-down minus">-</button>
      <input class="block" name="kol" type="number" value="13" id="50" qwe="Текст" min="1" max="50" step="1">
      <button type="button" name="valueUp" class="input-number-up  plus">+</button>
    </div>

    带 steUp 和 stepDown 插头

    function steUp(event) {
        // здесь Ваша реализация
    }
    function stepDown(event) {
        // здесь Ваша реализация
    }
    
    function isNumeric(str) {
        if(str.match(/^-?\d+$/)) { return true; }
        if(str.match(/^\d+\.\d+$/)) { return true; }
        return false;
    }
    
    $('body').on('click', 'button.plus, button.minus', function() {
      var qty = $(this).parent().find('input'),
          typedAttrValue = isNumeric(qty.attr('qwe')) ? parseInt(qty.attr('qwe')) : qty.attr('qwe');   console.log(typedAttrValue);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div class="input-number">
      <button type="button" name="valueDown" onclick="stepDown()" class="input-number-down minus">-</button>
      <input class="block" name="kol" type="number" value="13" id="50" qwe="123" min="1" max="50" step="1">
      <button type="button" name="valueUp" onclick="steUp()" class="input-number-up  plus">+</button>
    </div>
    
    <div class="input-number">
      <button type="button" name="valueDown" onclick="stepDown()" class="input-number-down minus">-</button>
      <input class="block" name="kol" type="number" value="13" id="50" qwe="Текст" min="1" max="50" step="1">
      <button type="button" name="valueUp" onclick="steUp()" class="input-number-up  plus">+</button>
    </div>

    选项编号 2

    嗯,第二种选择就是将这些值按不同的属性分开,分别获取

    因此,我只是代替

    qwe="123"
    

    和

    qwe="Текст"
    

    在不同的元素中,我只指定两个不同的属性qwe-int和qwe-string

    qwe-int="456" qwe-string="Текст второго элемента"
    

    然后我分别得到它们,将它们保存在两个不同的变量中,并将其中一个带入一个数字

    var qweInt = parseInt(qty.attr('qwe-int')),
        qweString = qty.attr('qwe-string');
    

    这里我只指出一个带有stubs的选项(onclick,如果需要,你可以自己去掉)

    function stepDown(event){
       // Здесь ваша реализация данного метода
    }
    function steUp(event){
       // Здесь ваша реализация данного метода
    }
    $('body').on('click', 'button.plus, button.minus', function() {
    
      var qty = $(this).parent().find('input'),
          qweInt = parseInt(qty.attr('qwe-int')),
          qweString = qty.attr('qwe-string');
        
      console.log(qweInt);
      console.log(qweString);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div class="input-number">
      <button type="button" name="valueDown" onclick="stepDown()" class="input-number-down minus">-</button>
      <input class="block" name="kol" type="number" value="13" id="50" qwe-int="123" qwe-string="Текст первого элемента" min="1" max="50" step="1">
      <button type="button" name="valueUp" onclick="steUp()" class="input-number-up  plus">+</button>
    </div>
    
    <div class="input-number">
      <button type="button" name="valueDown" onclick="stepDown()" class="input-number-down minus">-</button>
      <input class="block" name="kol" type="number" value="13" id="50" qwe-int="456" qwe-string="Текст второго элемента" min="1" max="50" step="1">
      <button type="button" name="valueUp" onclick="steUp()" class="input-number-up  plus">+</button>
    </div>

    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5