根据firestore中每个字段的数据值将视频文件从firebase存储传递到另一个页面



我正试图将视频文件从firebase存储传递到基于firestore内每个字段的数据值的另一个页面。但是…大家都能理解,我犯了一个错误。正确的!由于某些原因,我得到了这个恼人的错误:

Uncaught ReferenceError: uploadVid is not defined在HTMLInputElement.onchange

下面是我使用的代码:

window.onload = function() {
var subjectSel = document.getElementById("subject");
var bookSel = document.getElementById("book");
var pageSel = document.getElementById("page");
const IGLink = document.querySelector("#IG_link");
for (var x in subjectObject) {
subjectSel.options[subjectSel.options.length] = new Option(x, x);
}
subjectSel.onchange = function() {
//empty Chapters- and Topics- dropdowns
pageSel.length = 1;
bookSel.length = 1;
//display correct values
for (var y in subjectObject[this.value]) {
bookSel.options[bookSel.options.length] = new Option(y, y);
}
}
bookSel.onchange = function() {
//empty Chapters dropdown
pageSel.length = 1;
//display correct values
var z = subjectObject[subjectSel.value][this.value];
for (var i = 0; i < z.length; i++) {
pageSel.options[pageSel.options.length] = new Option(z[i], z[i]);
}
}

function uploadVid(files) {
const storageRef = firebase.storage();
const videoRef = storageRef.child('subjectSel.value');

const file = files.item(0);

const task = videoRef.put(file)

task.then(snapshot => {
console.log(snapshot)
const url = snapshot.downloadURL
document.getElementById('file-ip-1-preview').setAttribute('src', url)
})
}
// Click submit in add modal
formA.addEventListener('submit', e => {
e.preventDefault();
const db = firebase.firestore();
db.collection('videos').add({
subject: subjectSel.value,
book: bookSel.value,
page: pageSel.value,
IGLink: IGLink.value,
});
});

}


<form action="#" class="login-form" name="Creator Submission">
<div class="custom-select">
Subjects: <select name="subject" id="subject">
<option value="" selected="selected">Select subject</option>
</select>
</div>
<div class="custom-select">
Books: <select name="book" id="book">
<option value="" selected="selected">Please select subject first</option>
</select>
</div>
<div class="custom-select">
Page: <select name="page" id="page">
<option value="" selected="selected">Please select a book first</option>
</select>
</div>
<input type="url" id="IG_link" pattern="https://.*" class="ig_li" placeholder="your instagram link:">
<label for="IG_link"></label>
<div class="txtb">
<input type="file" id="file-ip-1" accept="video/mp4" onchange="uploadVid(this.files);">
</div>

<div class="preview">
<video id="file-ip-1-preview" src="">
</div>

<input type="submit" class="logbtn" value="Publish">
</form>

我不知道如何解决这个问题,也不知道是什么导致了这个错误。

问题是您定义uploadVid函数的方式不是"可见"的;到尝试调用它的HTML代码。没有看到你是如何将JavaScript代码导入到你的HTML文件中,我们只能猜测你需要对函数声明做什么更改,以便它在HTML的onChange属性的范围内。

最新更新