Javascript 函数名为";清晰的;没有人打电话。试着打电话;清除();使用内嵌js

Javascript 函数名为";清晰的;没有人打电话。试着打电话;清除();使用内嵌js,javascript,Javascript,我不知道为什么我的函数没有被调用。我将警报(“test”)放在那里只是为了测试函数是否被调用,而不是 HTML: JS: 功能清除(价格、数量){ 警报(“测试”); i=0; 如果(i可能是因为clear(price,quantity)在你的html中无效。我打赌如果你检查你的控制台,它会说“price”不存在 为了验证,我创建了一个,它在控制台(f12)中显示了这个错误 未捕获的引用错误:未定义价格 问题在于内联js中使用的名称“clear!” 这是因为“clear”指的是文档。clea

我不知道为什么我的函数没有被调用。我将
警报(“test”)
放在那里只是为了测试函数是否被调用,而不是

HTML:


JS:

功能清除(价格、数量){
警报(“测试”);
i=0;

如果(i可能是因为
clear(price,quantity)
在你的html中无效。我打赌如果你检查你的控制台,它会说“price”不存在

为了验证,我创建了一个,它在控制台(f12)中显示了这个错误

未捕获的引用错误:未定义价格

问题在于内联js中使用的名称“clear!”


这是因为“clear”指的是
文档。clear
完全不是您想要的。这是不使用内联js的另一个理由。请阅读此处:此处:

可能是因为html中的
clear(price,quantity)
无效。我打赌,如果您检查控制台,它会说“price”不存在

为了验证,我创建了一个,它在控制台(f12)中显示了这个错误

未捕获的引用错误:未定义价格

问题在于内联js中使用的名称“clear!”


这是因为“clear”指的是
文档。clear
完全不是您想要的。这是不使用内联js的另一个参数。请阅读这里:这里:

在这个函数中-
onclick=“clear(price,quantity)”
-
price
quantity
是尚未定义的变量,因此在调用
clear
之前,您将得到一个参考错误

您可以使用
window.price=1;
或(在相同或更广泛的范围内)
var price=1
来定义它们。后者通常是更好的选择


看起来您想要传递您拥有的输入元素的节点列表。您不能仅仅将它们作为全局引用,您必须通过DOM访问它们

由于您正在处理表单控件上的单击事件句柄,因此可以通过
this
访问表单控件。表单控件元素对象具有引用其关联表单的
表单
属性。表单元素对象具有
元素
集合。元素集合允许您访问表单控件如果有多个控件具有相同的名称,则会得到节点列表,而不是节点本身

onclick="clear(this.form.elements.price,this.form.elements.quantity)"

在此函数中-
onclick=“clear(price,quantity)”
-
price
quantity
是尚未定义的变量,因此在调用
clear
之前,您将得到一个参考错误

您可以使用
window.price=1;
或(在相同或更广泛的范围内)
var price=1
来定义它们。后者通常是更好的选择


看起来您想要传递您拥有的输入元素的节点列表。您不能仅仅将它们作为全局引用,您必须通过DOM访问它们

由于您正在处理表单控件上的单击事件句柄,因此可以通过
this
访问表单控件。表单控件元素对象具有引用其关联表单的
表单
属性。表单元素对象具有
元素
集合。元素集合允许您访问表单控件如果有多个控件具有相同的名称,则会得到节点列表,而不是节点本身

onclick="clear(this.form.elements.price,this.form.elements.quantity)"

您的JavaScript控制台中是否有任何错误?您在哪里声明js?@PedroL。-何时声明并不重要。在单击事件触发且函数未尝试接触DOM之前,不会调用该函数。是否要根据if进行循环?是否定义了价格和数量?您的JavaScript控制台中是否有任何错误?您在哪里声明调用js?@PedroL.-什么时候调用都没关系。直到点击事件触发,函数才被调用,函数也不会尝试触碰DOM。你想从if开始循环吗?价格和数量定义了吗?我刚刚发布了所有代码,你可以看到,它们是defined@Snubber-不,不是。创建HTML元素并不定义JavaSccript变量。(至少不是以任何标准或一致的方式)我只是发布了所有代码,以便您可以看到,它们是defined@Snubber-不,不是。创建HTML元素不会定义JavaScript变量。(至少不会以任何标准或一致的方式)我刚刚发布了所有的代码,所以你可以看到,它们被定义了。我刚刚发布了所有的代码,所以你可以看到,它们被定义了
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Amount Owed</title>
<script type = "text/javascript">
function amount(price, quantity){
    sum1 = price[0].value * quantity[0].value;
    sum2 = price[1].value * quantity[1].value;
    sum3 = price[2].value * quantity[2].value;
    sum4 = price[3].value * quantity[3].value;
    return sum1 + sum2 + sum3 + sum4;
}
function clear(price,quantity){
    alert("test");
    i=0;
    if(i<5){

        price[0].value = "";
        quantity[0].value = "";
        i++;
    }
}
</script>
</head>
<body>
<h1>Amount Owed</h1>
<p>Enter price for first amount and quantity for each item</p>
<form>
<table>
    <tr>
        <td>PRICE</td>
        <td>QUANTITY</td>
    </tr>
    <tr>
        <td><input type="text" name="price" size="6"></td>
        <td><input type="text" name="quantity" size="6"></td>
    </tr>
    <tr>
        <td><input type="text" name="price" size="6"></td>
        <td><input type="text" name="quantity" size="6"></td>
    </tr>
    <tr>
        <td><input type="text" name="price" size="6"></td>
        <td><input type="text" name="quantity" size="6"></td>
    </tr>
    <tr>
        <td><input type="text" name="price" size="6"></td>
        <td><input type="text" name="quantity" size="6"></td>
    </tr>
</table>
<input type="button" onclick="pay.value = amount(price,quantity)" value="Total">
<input type="button" onclick="clear(price,quantity)" value="Clear">
<p>The total is: <input type="text" id="pay" name="pay"></p>
</form>
</body>
</html>    
onclick="clear(this.form.elements.price,this.form.elements.quantity)"