【问题标题】:Sending id via javascript listener通过 javascript 监听器发送 id
【发布时间】:2021-10-01 16:26:20
【问题描述】:

对于我的所有其他选项,这很好用(我只是将替换部分编辑为正确的 id)..

(注意:所有的“都被淘汰了,因为在生产中这些都是用js动态创建的)

<div class=\"singlecontrol\"><span style=\"vertical-align: middle;\">Colour Picker</span><input oninput=\"updatetxtcolour(event)\" id=\"colourpicker"+textcount+"\" value=\"#dfe481\" type=\"color\" autocomplete=\"off\" ></div>
 
<script> 
function updatetxtcolour(e) {
    var ideditaded = e.target.getAttribute("id").replace("colourpicker", "");
document.getElementById("quotetext"+(ideditaded)).style.color = document.getElementById("colourpicker"+(ideditaded)).value;
}
 </script> 

但是对于我的字体选择器来说,它的工作原理是这样的......

<div class=\"singlecontrol\"><span style=\"vertical-align: middle;\">Font Picker</span><input id=\"font"+textcount+"\" type=\"text\" autocomplete=\"off\" ></div>
 
 
<script> 
$('#font'+(textcount))
                .fontselect()
                .on('change', function() {
                applyFont(this.value);
                });
 
        } 
 
  
    function applyFont(font) {
      console.log('You selected font: ' + font);
     
      // Replace + signs with spaces for css
      font = font.replace(/\+/g, ' ');
     
      // Split font into family and weight
      font = font.split(':');
     
      var fontFamily = font[0];
      var fontWeight = font[1] || 400;
     
      // Set selected font on paragraphs
      $('quotetext'+(textcount)).css({fontFamily:"'"+fontFamily+"'", fontWeight:fontWeight});
 
}
</script>

我无法让后一个字体选择器以与其他字体相同的方式运行,即传递正确的 ID,因为它们是动态创建的,就像 https://stackoverflow.com/a/69397361/4772471

我所有的其他选项都调用了一个函数 oninput,但是这个使用了一个监听器,然后运行了一个函数,所以我很难过。

【问题讨论】:

  • 请不要通过编辑将有效答案合并到您的问题中来使其无效。

标签: javascript html jquery


【解决方案1】:

使用(必须使用“#”号):

$('#quotetext'+(textcount)).css({fontFamily:"'"+fontFamily+"'", fontWeight:fontWeight});

代替:

$('quotetext'+(textcount)).css({fontFamily:"'"+fontFamily+"'", fontWeight:fontWeight});

另外,你可以使用模板字符串(了解更多:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals),会更易读:

$(`#quotetext${textcount}`)

【讨论】:

  • 谢谢你,注意到并改变了,我的主要问题是尝试使用 ('ideditaded' ) 而不是 ('textcount') 传递与其他人相同的 id 以便通过使用多个时正确的 id。
  • 那么你希望从颜色选择器中传递 id 吗?
  • 不,我希望字体选择器中的 id 以与颜色选择器相同的方式传递,原因是它们是动态创建的,并且使用 textcount 传递了错误的 id,您可以对其进行测试出来看看我的意思dev.mockupmonkey.co.uk/postermaker 添加2 大量文本然后尝试更改第一个字体。不会工作,但如果你先做其他任何事情,它会按预期工作。
  • 如果有帮助,这就是我从jqueryscript.net/other/system-google-font-picker.html获得“字体选择器”的地方
  • 我会在下班后寻找它;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
相关资源
最近更新 更多