如何在HTML中定义javascript函数并使其能够接受来自用户的值
我正在尝试对代码进行白盒测试,我必须创建一个可以接受用户值的函数。我使用了一个模板来创建一个提交表单,然后我为用户定义了一个函数来接受值,然后将其传递给另一个.js文件中的函数 以下是HTML代码:如何在HTML中定义javascript函数并使其能够接受来自用户的值,javascript,Javascript,我正在尝试对代码进行白盒测试,我必须创建一个可以接受用户值的函数。我使用了一个模板来创建一个提交表单,然后我为用户定义了一个函数来接受值,然后将其传递给另一个.js文件中的函数 以下是HTML代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Device motion</title> <script type="te
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Device motion</title>
<script type="text/javascript" src="DeviceMotion3D.js">
<script type="text/javascript">
function Passing(){
alert("called");
var c = document.getElementById("textX").value;
var d = document.getElementById("textY").value();
var e = document.getElementById("multiX").value();
var f = document.getElementById("multiY").value();
alert("c:"+c +"d:"+ d +"e:"+e+"f:" +f);
// DeviceMotion3D(c,d,e,f);
}
</script>
</script>
<link rel="stylesheet" href="css/style.css" type="text/css">
</head>
<body>
<div id="header">
<div>
<div id="logo">
</div>
<ul id="navigation">
<li class="selected">
<a href="contact.html">Device motion</a>
</li>
</ul>
</div>
</div>
<div id="contents">
<div>
<div class="body" id="contact">
<div id="sidebar">
<div class="body">
<img src="images/chair-small.png" alt="Img">
<div class="contact">
</div>
</div>
</div>
<div id="main">
<h1>Cube</h1>
<p>
This cube does this. This file does that. These values do all this
</p>
<form action="Cube.html" method="post" onsubmit="Passing();">
<form>
<label>X axis angle</label>
<input type="text" value="" name="X" id="textX">
<label>Y axis angle</label>
<input type="text" value="" name="Y" id="textY">
<label>multiplying factor x</label>
<input type="text" value="" name="x" id="multiX">
<label>multiplying factor y</label>
<input type="text" value="" name="y" id="multiY">
<input type="submit" value="Submit" class="btn1" onclick="Passing();" >
</form>
</div>
</div>
</div>
</div>
</body>
</html>
但这是行不通的。我使用了一个警报来知道它是否将传递给函数Passing(),但没有显示警报,因此所有值都未定义。因此,请帮助解决这个问题。这里是一个小例子。用户在文本字段中输入两个数字,然后单击按钮和第三个文本字段(若填充了用户输入的数字总和) 以下是HTML:
<!DOCTYPE html>
<html>
<head>
<title>Calculator</title>
<meta charset="UTF-8" />
<link rel="stylesheet" href="style1.css" />
<script type="text/javascript" src="jsc2.js"> </script>
</head>
<body>
<h3>Calculator</h3>
<div style="border:none;height:130px;" id="okvir">
<form action="#">
First Number: <input type="text" id="num1" name="FirstNumber">
<br /><br />
Second Number: <input type="text" id="num2" name="SecondNumber">
<br /><br />
Sum: <input type="text" name="Result" id="result"></input>
</form>
</div>
<br />
<div id="buttons">
<input type="button" class="button1" onClick="add();" value="Sum" />
</div>
</body>
</html>
var a=document.getElementById('num1').value用于从用户和服务器获取数据
document.getElementById('result')。value=res;用于从函数中设置HTML格式的数据
onClick=“add();”用于在HTML中调用函数
输入type=“button”class=“button1”onClick=“add();”value=“Sum”
我希望这对您有所帮助,您可以在代码中使用它。祝你好运
在评论后添加:
好的,我在评论之后修改了你的代码。为了更好地查看,我删除了一些行。希望这有帮助。:)
HTML:
现在,先传球。然后在其中,使用参数调用DeviceMotion3D。如果要跳过呼叫传递,请替换
<input type="button" class="button1" onClick="Passing();" value="Submit" />
祝你好运。:) 为什么要使用表单和提交?只使用onclick可能会更容易。我尝试使用onclick,但它也不起作用。您的HTML看起来无效-我看到一行中有两个
打开的标记?我传递的变量是设备每时每刻抛出的角度。另外两个变量是乘数。这些角度和倍增因子决定立方体旋转的速度。(这是另一个js文件)对此不确定,但在onsubmit和onclick调用中传递()后,请去掉分号。您好,谢谢您的回答。我试图定义只在js文件中传递的函数,并在html页面中进行了注释。但它仍然不起作用。无法理解和解决问题。好像它甚至不接受这些值,否则就会出现警报“called”。嗨,刚才看到了。我不得不在这一行中关闭js文件的脚本标记,现在该函数正在被调用,但它无法将值进一步传递给js文件。所以html页面中的alert给出了用户输入的值,而js文件中的alert给出了未定义的值。希望它能帮助您解决问题。非常感谢@Rod.:)将尝试此解决方案。。希望这个有效!!
function add(){
var a = document.getElementById('num1').value;
var b = document.getElementById('num2').value;
a = parseInt(a);
b = parseInt(b);
var res = a + b;
document.getElementById('result').value=res;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Device motion</title>
<meta charset="UTF-8" />
<link rel="stylesheet" href="style1.css" />
<script type="text/javascript" src="DeviceMotion3D.js"></script>
<script type="text/javascript">
function Passing(){
alert("called in HTML");
var c = document.getElementById("textX").value;
var d = document.getElementById("textY").value;
var e = document.getElementById("multiX").value;
var f = document.getElementById("multiY").value;
alert("c:"+c +"d:"+ d +"e:"+e+"f:" +f);
DeviceMotion3D(c,d,e,f);
}
</script>
</head>
<body>
<div id="main">
<h1>Cube</h1>
<p>This cube does this. This file does that. These values do all this</p>
<!-- <form action="Cube.html" method="post" onclick="Passing();"></form>-->
<form action="#">
<label>X axis angle</label>
<input type="text" value="" name="X" id="textX">
<label>Y axis angle</label>
<input type="text" value="" name="Y" id="textY">
<label>multiplying factor x</label>
<input type="text" value="" name="x" id="multiX">
<label>multiplying factor y</label>
<input type="text" value="" name="y" id="multiY">
</form>
<br />
<div id="buttons">
<input type="button" class="button1" onClick="Passing();" value="Submit" />
</div>
</div>
</body>
</html>
function DeviceMotion3D(pc,pd,pe,pf){
alert("called in funct");
alert("c:"+ pc +"d:"+ pd +"e:"+ pe +"f:" + pf);
var _obj = {
c:pc,
d:pd,
e:pe,
f:pf
};
alert("called in funct as object");
alert("c:"+_obj.c +"d:"+ _obj.d +"e:"+_obj.e+"f:" +_obj.f);
}
<input type="button" class="button1" onClick="Passing();" value="Submit" />
<input type="button" class="button1" onClick="DeviceMotion3D();" value="Submit" />
function DeviceMotion3D(){
alert("called in funct");
var pc = document.getElementById("textX").value;
var pd = document.getElementById("textY").value;
var pe = document.getElementById("multiX").value;
var pf = document.getElementById("multiY").value;
alert("c:"+ pc +"d:"+ pd +"e:"+ pe +"f:" + pf);
var _obj = {
c:pc,
d:pd,
e:pe,
f:pf
};
alert("called in funct as object");
alert("c:"+_obj.c +"d:"+ _obj.d +"e:"+_obj.e+"f:" +_obj.f);
}