我可以在Javascript中调用GetElement中的另一个函数吗

我可以在Javascript中调用GetElement中的另一个函数吗,javascript,html,Javascript,Html,我试图调用getElement中的另一个函数,但当我更改选择时,它并没有完全起作用。当我选择Car时,在文本框中,我的varxumb应该填充。任何想法 document.getElementById("mycall1").insertRow(-1).innerHTML = '<td><select id = "forcx" onchange="fillgap()"><option>Select</option><option>Force

我试图调用getElement中的另一个函数,但当我更改选择时,它并没有完全起作用。当我选择Car时,在文本框中,我的varxumb应该填充。任何想法

document.getElementById("mycall1").insertRow(-1).innerHTML = '<td><select id = "forcx" onchange="fillgap()"><option>Select</option><option>Force</option><option>Angle</option><option>Area</option></select></td>';
function fillgap() {
    var xnumb = 20;
    var forcxlist = document.getElementById("forcx");
    if (forcxlist == "Force") {
        document.getElementById("result1").value = xnumb;
    }
}

forcxlist变量是一个元素对象,由document.getElementById方法返回。之后,您将检查此元素对象是否等于Force,这是一个字符串,表示永远不会执行if块的内容。你的意思是检查那个物体的内容是否等于力吗

而不是

 if (forcxlist == "Force"){
使用


我希望这有帮助

我不知道这个力值是如何得到检验的。 你可以试试这些解决方案

if (forcxlist == "Force")
改用

var forcxlistText = forcxlist.options[forcxlist.selectedIndex].text;
if (forcxlistText == "Force")
或者使用价值技巧

<div id ="mycall1">
</div>
<div id ="result1">
</div>
<script>
    document.getElementById("mycall1").innerHTML = '<td><select id = "forcx" onchange="fillgap(this.value)"><option value="1">Select</option><option value="2">Force</option><option value="3">Angle</option><option value="4">Area</option></select></td>';

    function fillgap(value){
         var xnumb = 20;         
         if (value == "2"){
             document.getElementById("result1").innerHTML = xnumb;    
         }
    }
</script>
或使用

<div id ="mycall1">
</div>
<input type="text" id="result1" value=""/>
<script>
    document.getElementById("mycall1").innerHTML = '<td><select id = "forcx"><option value="1">Select</option><option value="2">Force</option><option value="3">Angle</option><option value="4">Area</option></select></td>';

    document.getElementById("forcx").onchange = function (){
        var xnumb = 20; 
        var forcxlist = document.getElementById("forcx");
        var forcxlistValue = forcxlist.options[forcxlist.selectedIndex].value;
        if (forcxlistValue == "2"){
            document.getElementById("result1").value = xnumb;    
        }
    }
</script>

无法使用innerHTML,因此我将其更改为.value

document.getElementById("result1").value = xnumb;    

这里有几个问题

首先,您希望forcxlist是一个字符串,而不是一个元素,因此需要使用.value来获取下拉列表的选定值。 其次,您应该使用===而不是==进行比较,因为这也确保了类型相等,并且是最佳实践

我还建议您使用HTML元素构建select。它使东西更干净,可读性更强,更易于维护

由于select使用相同的id,因此必须将fillgap处理程序中的选择器更改为var forcxlist=e.target.value;,这样,无论表中有多少行,事件都将仅基于与之交互的select触发

下面是更新的代码和更新的工作提琴。根据您关于添加额外行的评论,fiddle也可以这样做

<input type="button" value="Add Row" onclick="addDropDown()">
<table id="mycall1"></table>

<script>
  function addDropDown() {
    var tbl = document.getElementById("mycall1");
    var newRow = tbl.insertRow(-1);
    var newCell = newRow.insertCell(0);
    newCell.appendChild(createDropDown("forcx", fillgap));
  }

  function createDropDown(id, onchange) {
    var dd = document.createElement('select');
    dd.id = id;
    dd.onchange = onchange;
    createOption("Select", dd);
    createOption("Force", dd);
    createOption("Angle", dd);
    createOption("Area", dd);
    return dd;
  }

  function createOption(text, dropdown) {
    var opt = document.createElement("option");
    opt.text = text;
    dropdown.add(opt);
  }

  function fillgap() {
    var xnumb = 20;
    var forcxlist = e.target.value;

    if (forcxlist === "Force") {
        document.getElementById("result1").value = xnumb;
    }
  }
</script>

<input type="text" id="result1">

Dom元素不能等于字符串。您应该正在侦听select元素上的更改事件。请发布一个并包括HTML。实际上,强制来自选择我修复了我的问题检查了我的选项列表,它不是wokringsarje我使用了值技术,但它不起作用函数fillgapvalue{var xnumb=20;如果值==1{document.getElementByIdresult1.value=xnumb;}我改变了选项并增加了值…比如这个document.getElementByIdmycall1.insertRow-1.innerHTML='SelectForceAngleArea';好的,首先告诉我这个td标记是否被添加到html正文中,如果被添加,那么告诉我函数fillgap是否被访问?它提供的值技术在当我进入第二行的时候,这个方法怎么会不起作用呢?我用新的代码更新了我的答案,并用一个更新的提琴来演示使用HTML元素,而不是使用innerHTML和字符串。希望这对你有用。
<input type="button" value="Add Row" onclick="addDropDown()">
<table id="mycall1"></table>

<script>
  function addDropDown() {
    var tbl = document.getElementById("mycall1");
    var newRow = tbl.insertRow(-1);
    var newCell = newRow.insertCell(0);
    newCell.appendChild(createDropDown("forcx", fillgap));
  }

  function createDropDown(id, onchange) {
    var dd = document.createElement('select');
    dd.id = id;
    dd.onchange = onchange;
    createOption("Select", dd);
    createOption("Force", dd);
    createOption("Angle", dd);
    createOption("Area", dd);
    return dd;
  }

  function createOption(text, dropdown) {
    var opt = document.createElement("option");
    opt.text = text;
    dropdown.add(opt);
  }

  function fillgap() {
    var xnumb = 20;
    var forcxlist = e.target.value;

    if (forcxlist === "Force") {
        document.getElementById("result1").value = xnumb;
    }
  }
</script>

<input type="text" id="result1">