无法使用javascript分配值

无法使用javascript分配值,javascript,safari,Javascript,Safari,我试过在这里找到的各种东西,但我不能让它工作。下面是我的整个HTML测试文档。我正在使用以下url加载它: file:///Users/aaronbratcher/Documents/Tester.html?Donor.firstName=John&Donor.lastNameBusiness=Smith 我期望的是javascript使用URL上传递的值填充这两个文本字段,但是它们没有被填充。日志消息表明已按预期找到所有内容。没有报告错误或警告 我做错了什么 谢谢 <!DOCTYPE h

我试过在这里找到的各种东西,但我不能让它工作。下面是我的整个HTML测试文档。我正在使用以下url加载它:

file:///Users/aaronbratcher/Documents/Tester.html?Donor.firstName=John&Donor.lastNameBusiness=Smith

我期望的是javascript使用URL上传递的值填充这两个文本字段,但是它们没有被填充。日志消息表明已按预期找到所有内容。没有报告错误或警告

我做错了什么

谢谢

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title>Accept Donation</title>
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name = "viewport" content = "width = 320, initial-scale = 1, user-scalable = no">
    </head>

    <body>
    <form name="AcceptDonation" action="http://localhost" onsubmit="return review()" method="get">
        <H2>Donor Name</H2>
        <div class="table-field">
            <input type="text" class = "textField fullWidth" name = "Donor.firstName" id="firstName" autocorrect="off" placeholder="First Name">
        </div>
        <div class="table-field bottom">
            <input type="text" class="textField fullWidth" name = "Donor.lastNameBusiness" id="lastName" autocorrect="off" placeholder="Last Name">
        </div>
        </form>

        <script type='text/javascript'>
        var urlParameters = {}
        var kMinReceiptRequiredAmount = 250

         window.onload = function () {
            loadParameters()
        }

        function loadParameters() {
            var url = window.location.search.substring(1)
            var parts = url.split("&")
            for (var i=0; i < parts.length; i++) {
                var parameter = parts[i]
                var parameterParts = parameter.split("=")
                var parameterKey = decodeURI(parameterParts[0])
                var parameterValue = decodeURI(parameterParts[1])

                var docObject = document.getElementsByName(parameterKey)
                console.log(docObject)
                console.log(parameterValue)
                if (docObject) {
                    docObject.value = parameterValue
                }
            }           
        }
        </script>
    </body>
</html>

接受捐赠
捐赠者姓名
var urlParameters={}
var kMinReceiptRequiredAmount=250
window.onload=函数(){
loadParameters()
}
函数loadParameters(){
var url=window.location.search.substring(1)
var parts=url.split(&)
对于(变量i=0;i
函数
.getElementsByName()
返回元素的列表,即使页面上只有一个匹配

  if (docObject && docObject.length)
    docObject[0].value = parameterValue;
您实际上不需要测试返回值是否为非空,因为
.getElementsByName()
始终返回节点列表

  if (docObject.length)
    docObject[0].value = parameterValue;

您正在使用
getElementsByName
,它返回一个
nodeList
。因此,当您设置文本字段元素的值时,您需要从列表中访问它,就像在数组中访问它一样

var docObject = document.getElementsByName(parameterKey)
console.log(docObject)
console.log(parameterValue)
if (docObject.length) {
    docObject[0].value = parameterValue
}

如果可能的话,我会更改它,以便您通过
id
而不是
name
查找元素。如果有多个具有该名称的字段,则使用
getElementsByName
非常有用。如果只有一个字段具有该id,则使用
getElementById
非常有用,这样您就不必担心使用
nodeList

即使您正在记录
docObject
,这个问题也可以在控制台中清楚地看到。只有当您意识到括号表示一个对象数组时,这个问题才明显:p