无法读取属性' toString' of undefined(onclick.toString())

时间:2016-09-14 06:04:46

标签: javascript

我试图获取与onclick事件对应的Javascript函数的源代码。 如果在onclick函数中有单引号('),我会收到错误。 以下是示例代码

   <html>
    <head>
        <script language="JavaScript" type="text/javascript">
            function selectedInputChange(input, mode, auth) {
            }
            function onClickToString() {
                try {
                    document.getElementById('demo').innerHTML = document.getElementById('radioSelect').onclick.toString();
                }
                catch(err) {
                    document.getElementById("demo").innerHTML = err.message;
                }
            }
        </script>
    </head>
    <body>
        <h1>My First JavaScript</h1>
        <input type="radio" id="radioSelect" onclick="selectedInputChange('Some input with ' in it')"/>
        <button type="button" onclick="onClickToString()">Click Here</button>
        <p id="demo"></p>
    </body>
</html>

如果没有单引号存在,那么我获得了正确的输出,但如果有单引号我就会

  

无法读取属性&#39; toString&#39;未定义的

错误响应,即使有单引号,如何获取字符串?

修改 注意:我无法控制HTML内容,我只是在iframe中加载网页,这为我提供了上述HTML源代码。 因此,根据其中一条评论,这不是一个错字。

2 个答案:

答案 0 :(得分:0)

此属性包含无效的JavaScript(其中包含语法错误的JavaScript):

UserClaimsPrincipalFactory

你需要一个包含单引号的反斜杠:

// JavaScript string ends here ---------------v
onclick="selectedInputChange('Some input with ' in it')"
// So this is a syntax error ------------------^^^^^^^^

有效:

&#13;
&#13;
onclick="selectedInputChange('Some input with \' in it')"
&#13;
function selectedInputChange() {
    document.getElementById('demo').innerHTML = document.getElementById('radioSelect').onclick.toString();
}
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

在这种情况下&#34; onclick&#34;不是对象,只是事件。 如果你想获得onclick的内部字符串值,你可以通过&#34; getAttribute&#34;。

document.getElementById('radioSelect').getAttribute("onclick");

关于getAttribute https://developer.mozilla.org/en/docs/Web/API/Element/getAttribute