- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我目前正在尝试在使用 React 时返回 inside.HTML 内的按钮。这是有问题的代码行:
document.getElementById("groupDisplay").innerHTML = "Group Name: "+doc.id+" Module Code: "+doc.data().ModuleCode+' <input type="button" value="Join Group" onClick={ ()=>joinGroup()}>';
groupDisplay
只是一个空的 div 元素,doc.id
和 doc.data().ModuleCode
是正确返回的值
问题在于 "onClick={ ()=>joinGroup()}"
作为 joinGroup()
之前的 >
符号提前关闭按钮标签。仅当我使用 .innerHTML
时才会发生这种情况。当我编辑普通 HTML 时,它工作正常。
完整代码:
import React from "react";
import { compose } from "redux";
import { connect } from "react-redux";
import { signout } from "../store/actions/auth";
import requireAuth from "./hoc/requireAuth";
import firebase from "../services/firebase.js";
var db = firebase.firestore();
const Main = ({ signout }) => {
return (
<div id="homePage" className="container">
<div className="row">
<div class="col s6" id="createPage">
<form id="createGroup">
<i className="large material-icons prefix search-icon">group_add</i>
<div className="row">
<div className="col s12">
<div className="row">
<div className="input-field col s12 vert-align">
<input type="text" id="cgroupName" name="groupName"/>
<label htmlFor="cgroupName">Group Name</label>
</div>
</div>
<div className="row">
<div className="input-field col s12 vert-align">
<input type="text" id="cgroupModuleCode" name="moduleCode"/>
<label htmlFor="cgroupModuleCode">Module Code</label>
</div>
</div>
<div className="row">
<button onClick={ ()=> createGroup()}>Create Group</button>
</div>
</div>
</div>
</form>
</div>
<div className="col s6">
{/*<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase-database.js"></script>*/}
{/* Renders the search bar */}
<i className="large material-icons prefix search-icon">group</i>
<div className="row">
<div className="col s12">
<div className="row">
<div className="input-field col s12 vert-align">
<i className="material-icons prefix search-icon">search</i>
<input type= "text" id ="groupSearch" name="searchGroup"/>
<label htmlFor="groupSearch">Search For A Group</label>
<a className="waves-effect waves-teal btn-flat search-btn" onClick={ ()=> searchGroups()}>Search</a>
</div>
</div>
</div>
</div>
{/* Display any searched groups here */}
<div class="row" id="groupDisplay">
</div>
</div>
</div>
<button onClick={ () => profile()} hidden>Profile</button>
<button className="btn-switch" onClick={() => signout()}>Log Out</button>
</div>
);
};
function mapStateToProps(state) {
return {
auth: state.firebaseReducer.auth
};
}
function mapDispatchToProps(dispatch) {
return {
signout: () => dispatch(signout())
};
}
// function buildGroup(){
// document.getElementById("homePage").style.display = "none";
// document.getElementById("createPage").style.display = "block";
// }
function profile(){
}
// function back(){
// document.getElementById("homePage").style.display = "block";
// document.getElementById("createPage").style.display = "none";
// }
function logOut(){
document.getElementById("navbar").style.display = "none";
signout();
}
function searchGroups(){
if(document.getElementById("groupSearch").value == ""){
document.getElementById("groupDisplay").innerHTML = "Please enter a value and try again.";
}
else{
let GroupCollection = db.collection('groups').doc(document.getElementById("groupSearch").value);
GroupCollection.get()
.then(doc => {
if (!doc.exists) {
document.getElementById("groupDisplay").innerHTML = "No Results.";
} else {
document.getElementById("groupDisplay").innerHTML = "Group Name: "+doc.id+" Module Code: "+doc.data().ModuleCode+' <input type="button" value="Join Group" onClick={ ()=>joinGroup()}>';
}
})
.catch(err => {
document.getElementById("groupDisplay").innerHTML = "Error getting document: "+err;
});
}
}
function createGroup(){
const GroupCollection = db.collection('groups');
GroupCollection.doc(document.getElementById("cgroupName").value).set({
ModuleCode:document.getElementById("cgroupModuleCode").value,
Timetable: "",
User0: "",
User1: "",
User2: "",
User3: "",
User4: "",
User5: "",
User6: "",
User7: "",
User8: "",
User9: "",
})
}
function joinGroup(){
alert("Hello");
console.log('Button');
}
export default compose(
connect(
mapStateToProps,
mapDispatchToProps
),
requireAuth
)(Main);
最佳答案
JS 通常不会破坏这个简单的 =>
但由于您将整个 onClick 放在引号 "
内,它会理解为字符串。在这种情况下,请尝试将>
等敏感符号编码为>
最好是根本不使用箭头函数 {()=>joinGroup()}
而是改为 {this.joinGroup}
为了更安全的方法,请改为在 JS 中创建输入
var input = document.createElement("input");
input.setAttribute('type', 'button');
input.setAttribute('value', 'Join group');
input.onClick = () => joinGroup();
document.getElementById("groupDisplay").appendChild(input);
关于javascript - 在 .innerHTML 内部使用 '>' 会导致 HTML 语句过早关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59013977/
我的测试代码: int SIZE = 1900; int[][] array = new int[SIZE][]; for (int i = 0; i < SIZE; i++) { array[i
我有一堆 WAV 文件和一个将它们复制到另一个目录的脚本,但使用 SoX 处理了一些文件。输出的文件都应该有 1 个 channel ,采样率不超过 44.1khz。我的大多数文件要么有一个以上的 c
我正在运行一个相当占用内存的 Python 脚本,但似乎我的机器正在提前终止进程。我安装了 16GB(并通过 lshw -class memory 确认),但我的进程似乎在使用量达到 4GB 左右时被
我很难确定在使用 .NET 的 HttpWebRequest 类调用远程服务器(特别是 REST Web 服务)时是否有办法处理潜在的连接问题。根据我的调查,WebClient 类的行为是相同的,这在
所以我有这个网址: http://test.com/afolder/who-else-wants-to-make-horror-movies%3f/ 这是 URL 编码版本: http://test.
我是一名优秀的程序员,十分优秀!