误解了输入文本值属性函数的正确使用

Misunderstanding the proper use of Input Text value Property function

本文关键字:函数 属性 输入 文本 误解      更新时间:2023-09-26

我正在通过Javascript进行一个小的学习练习,该练习获取文本区域中文本的值,并按照正则表达式的指示将单引号替换为双引号。 我感到困惑的是为什么我不能/不/不应该在传递给 replaceQuote() 函数的参数中包含"value"属性。

在下面的代码中,我传递了document.form1.textarea1,一切运行良好。 如果我修改函数以将参数传递为 document.form1.textarea1.value,则代码不起作用。

我的问题是,我对价值财产及其运作方式的明显误解是什么。 我很确定这是非常基本的东西,我太迟钝而无法"得到"

此版本的函数有效

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
 <script type="text/javascript">
     function replaceQuote(textarea) {
         var myText = textarea.value;
         var myRegExp = /'B'|''B/g;
         myText = myText.replace(myRegExp,'"')
         textarea.value = myText;
     }
 </script>
</head>
<body>
<form name = "form1">
    <textarea rows="20" cols="40" name="textarea1">
        'Hello World' said Mr O'Connerly.
He then said 'My Name is O'Connerly, yes that's right, O'Connerly'.
    </textarea>
    <input type="button" value="replace single quote" onclick="replaceQuote(document.form1.textarea1)">
</form>
</body>
</html>

此版本的函数不起作用。 函数被修改为接受替换引用(document.form1.textarea1.value)

<!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
     <script type="text/javascript">
         function replaceQuote(textarea) {
             var myText = textarea;
             var myRegExp = /'B'|''B/g;
             myText = myText.replace(myRegExp,'"')
             textarea = myText;
         }
     </script>
    </head>
    <body>
    <form name = "form1">
        <textarea rows="20" cols="40" name="textarea1">
            'Hello World' said Mr O'Connerly.
    He then said 'My Name is O'Connerly, yes that's right, O'Connerly'.
        </textarea>
        <input type="button" value="replace single quote" onclick="replaceQuote(document.form1.textarea1.value)">
    </form>
    </body>
    </html>

在第一个版本中,传入对实际textarea对象的引用。 这意味着您可以读取和写入textarea.value 属性。

在第二个版本中,只传入 .value 属性的值 - 即文本区域的实际内容。 在函数中,它只是一个包含文本的局部变量,因此为其分配myText在函数之外没有任何效果。

代码的第二个版本不起作用的原因是因为在replaceQuotes函数中编写时

textarea = myText;

textarea 是一个局部变量,具有文本区域中文本的值。