未捕获的TypeError:String不是函数

时间:2013-11-27 19:35:57

标签: javascript html css

我是JavaScript的新手,作为我大学项目的一部分,我需要包含一些内容。我创建了一个简单的.js文件,并使用<script src="main.js"></script>

将其链接到我的index.html文件

我创建了另一个名为sellYourHome.html的页面,并添加了一个带有表格的<section>标记,并创建了一个简单的表单来计算一个委托,并在输入字段中显示结果。

function comCalc()
{
 prcHouse = parseFloat(document.getElementById('prcHouse').value);
 commision =  0.25; 
 result = prcHouse * commision;
 document.getElementById('prcHouse').value = result.toString();
}

那很有用。

现在,根据该功能,我想创建另一个获取<div>元素并将background-color更改为蓝色的内容。

所以我在index.html上创建了一个表单,并以相同的方式将相同的.js文件链接到它。

这是我的HTML:

<div id="mainContent">
    <p>hello</p>
    <form id="bgColor">
        <table>
            <tr>
                <td>
                    <input type="button" value="blue" onclick="bgColor('blue');">
                </td>
            </tr>
        </table>
    </form><!-- end of bgColor Form-->
</div>

我的javascript就像这样:

function comCalc()
{
    prcHouse = parseFloat(document.getElementById('prcHouse').value);
    commision =  0.25;  
    result = prcHouse * commision;
    document.getElementById('prcHouse').value = result.toString();
}

function bgColor(color)
{
  var div = document.getElementById('mainContent');
  div.style.background=color;  
}

当我运行它时,我在控制台上收到此错误:

  

未捕获的TypeError:字符串不是函数

我在一个名为SWRIron的浏览器中运行它(它基于Chrome并且是HTML5兼容的)。

我做错了什么?

2 个答案:

答案 0 :(得分:5)

这是因为您的函数名称为bgColor,因为bgcolorHTML元素的属性,并且它与您的函数bgcolor发生冲突,因此浏览器会将其视为attribute 1}}(字符串)但你用它作为一个函数,所以它说string is not a function。因此,将函数名称更改为此类其他任何内容

function setBgColor(color)
{
    var div = document.getElementById('mainContent');
    div.style.background = color;
}

将其用作

<input type="button" value="blue" onclick="setBgColor('blue');" />

Example.

答案 1 :(得分:0)

是。由于bgColor是为HMTL保留的系统,因此会抛出一个名为&#34; Uncaught TypeError的错误:字符串不是函数&#34;。如果您更改方法名称,它将正常工作并正常工作。