围绕现有的 INPUT-tag WRAP span-tag

Posted

技术标签:

【中文标题】围绕现有的 INPUT-tag WRAP span-tag【英文标题】:WRAP span-tag around existing INPUT-tag 【发布时间】:2019-05-16 14:54:19 【问题描述】:

我有一个清单,其中包含大约 50 个单选按钮组。每组有 3 个按钮,其值:是 否 N/A。这些组是使用我无法控制的表单工具创建的。

我需要在表单的每个组中为所有单选按钮添加一个 -tag,其值为“是”。仅使用原版 javascript

我尝试创建一个可以对所有单选按钮组进行排序的 javascript。我已经尝试将结果附加到一个数组中,我可以使用该数组来循环执行 prepend 操作。

请注意,ID 和 NAME 是为我生成的,所以我无法提前知道组名是什么。

console.log('start')
//var span = document.getElementById("span_id");
var inputs = document.getElementsByTagName("input");
 console.log('a:',inputs)
for (var i = 0; i < inputs.length; ++i) 
    if (inputs[i].defaultValue == 'yes') 
       var idd = inputs[i].id

      var parent = document.getElementById(idd).parentNode;
            var p = document.createElement("p");
            var span = document.createElement("span");
            //parent.append(p);
            parent.prepend(span);
    



getCheckedValue()

我有一个最新的代码在这里:https://jsfiddle.net/y4vLbtmw/54/

问题是我无法让 SPAN 标记环绕现有标记。它只附加在之前或之后。我怎么把标签像这样: [existing code] span >

我是否复制现有标签,将其删除,然后在新跨度之间重新插入?还是有其他方法?

【问题讨论】:

【参考方案1】:

你可以这样替换父div的Inner html

parent.innerHTML = "&lt;span&gt; " + parentHTML + "&lt;/span&gt;";

function getCheckedValue() 
console.log('start')
//var span = document.getElementById("span_id");
var inputs = document.getElementsByTagName("input");
 console.log('a:',inputs)
for (var i = 0; i < inputs.length; ++i) 
    if (inputs[i].defaultValue == 'yes') 
       var idd = inputs[i].id

      var parent = document.getElementById(idd).parentNode();
      parentHTML = parent.innerHTML;
      parent.innerHTML = "<span> " + parentHTML + "</span>";
            //var p = document.createElement("p");
            //var span = document.createElement("span");
            //parent.append(p);
            //parent.prepend(span);
    



getCheckedValue()


【讨论】:

【参考方案2】:

花了一些时间,但我终于找到了解决方案。

function getCheckedValue(newColor,newValue) 

//var span = document.getElementById("span_id");
var inputs = document.getElementsByTagName("input");

for (var i = 0; i < inputs.length; ++i) 
    if (newValue.localeCompare(inputs[i].value) == 0) 

       var idd = inputs[i].id
   console.log('value:',newValue,inputs[i].value,idd)
      elementToWrap = document.getElementById(idd);
            divWrapper = document.createElement("span");
      divWrapper.setAttribute("class", newColor);

      wrap_single(elementToWrap, divWrapper);
    



function wrap_single(el, wrapper) 
    el.parentNode.insertBefore(wrapper, el);
    wrapper.appendChild(el);

let divWrapper;
let elementToWrap;

//Run 

getCheckedValue('green','yes');
getCheckedValue('red','no');
getCheckedValue('yellow','n/a');

感谢您的意见

【讨论】:

【参考方案3】:

不能存储innerHTML,然后写span open tag + html + span close tag吗?

【讨论】:

以上是关于围绕现有的 INPUT-tag WRAP span-tag的主要内容,如果未能解决你的问题,请参考以下文章

如何从 input-tag 元素中检索文本值? [复制]

javascript first_word_wrap_to_span.js

javascript last_word_wrap_to_span.js

如何将元素翻译成里程表

如何在跨度元素 wpcf7-form-control-wrap 内放置标签

span元素文字自动换行