我可以在Javascript中调用GetElement中的另一个函数吗
我试图调用getElement中的另一个函数,但当我更改选择时,它并没有完全起作用。当我选择Car时,在文本框中,我的varxumb应该填充。任何想法我可以在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
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">