gpt4 book ai didi

javascript - 错误 : Cannot read property 'value' of null

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:49:07 24 4
gpt4 key购买 nike

我对 javascript 非常陌生,所以对于我提出问题的方式出现的任何问题,我提前表示歉意。我正在尝试发布数据并在所有字段未填写时弹出警告。其中一个字段是 radio 类型。这是一个带有我的脚本的 jsfiddle 的链接 http://jsfiddle.net/J2yWQ/64/

这是我目前的情况

function emailWarning() {
var check = document.getElementById("check");
check.className = 'show';
}

function validateEmail(xem) {
var re = /\S+@\S+\.\S+/;
return re.test(xem);
}

function postData() {
email = 'email'+document.getElementById('email').value;
var tt = validateEmail(email);
if (tt == true) {
xmlhttp.open('POST', 'payment.php', true);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(myProps.join("&"));
} else {
emailWarning();
}
}

function insert() {
try {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}


var myProps = [];

function addProp(id) {
var value = encodeURIComponent(document.getElementById(id).value);
myProps.push(id + "=" + value);
}

addProp('child_name');
addProp('age');
addProp('hometown');
addProp('boy_girl');
addProp('first_name');
addProp('last_name');
addProp('email');
addProp('address1');
addProp('address2');
addProp('city');
addProp('state');
addProp('zip');
addProp('country');

var flagInvalid = false;
var tempArray = document.getElementsByClassName("required");
for (var i = 0; i < tempArray.length; i++) {
if (tempArray[i].value == "") {
flagInvalid = true;
break;
}
}

if (flagInvalid == false) {
postData();

} else {

var log = document.getElementById("log");
log.className = 'show';
var log1 = document.getElementById("log1");
log1.className = 'show';
var log2 = document.getElementById("log2");
log2.className = 'show';
var log3 = document.getElementById("log3");
log3.className = 'show';
var log4 = document.getElementById("log4");
log4.className = 'show';
var log5 = document.getElementById("log5");
log5.className = 'show';
var log6 = document.getElementById("log6");
log6.className = 'show';
var log7 = document.getElementById("log7");
log7.className = 'show';
var log8 = document.getElementById("log8");
log8.className = 'show';
var log9 = document.getElementById("log9");
log9.className = 'show';
var log0 = document.getElementById("log0");
log0.className = 'show';
var logA = document.getElementById("logA");
logA.className = 'show';
}

} catch (e) {
alert('An error occured in inert: ' + e);
}

}

最佳答案

addProp 主体更改为这样时,问题很容易被捕获:

function addProp(id) {
var el = document.getElementById(id);
if (el) {
myProps.push(id + "=" + encodeURIComponent(el.value));
}
else {
alert('Not found: ' + id);
}
}

此 HTML 中不存在 boy_girlemail ID:

Boy: <input type="radio" name="boy_girl" id="boy_girl_b" value="boy"/>
Girl:<input type="radio" name="boy_girl" id="boy_girl_g" value="girl"/></li>
...
<input type="text" name="email" id="check" maxlength="64" class="required" />

你可以用这样的东西来修复它:

function addProp(name) {
var els = document.getElementsByName(name);
if (els.length) {
myProps.push(name + "=" + encodeURIComponent(els[0].value));
}
else {
alert('Not found: ' + name);
}
}

但实际上,这只是故事的开始。 myProps 局部于 insert 函数,但在 postData 函数中被引用;无论实际填充了哪些字段,您都会显示所有字段的验证错误标志......此外,您的代码有点湿 - 例如,所有这些

            var log = document.getElementById("log");
log.className = 'show';
var log1 = document.getElementById("log1");
log.className = 'show';
...

...可以很容易地转换成这样:

var showValidationError = function(id) {
var el = document.getElementById(id);
if (el) {
el.className = 'show';
}
else {
alert('Missing element #' + id);
}
}
...
showValidationError('log');
for (var i = 1; i < 10; i++) {
showValidationError('log' + i);
}

我知道您对 JS 很陌生;但这与新鲜度无关,而是与组织代码有关。

关于javascript - 错误 : Cannot read property 'value' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13049541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com